jQuery实现页面评论栏中访客信息自动填写功能的方法


Posted in Javascript onMay 23, 2016

首先简单说一说仿登陆的具体操作,用户第一次登陆时会出现用于填写评论者资料的框,当用户评论完成后,将会以 cookie 的方式记录评论者资料,一年后 cookie 自动清除,当用户再次评论时填写评论者资料的 div 将会隐藏,当用户点击“ Change ”时可以再次编辑评论者资料,同时 Change 字样会改为“ Finish ” ,点击 Finish 时填写评论者资料的 div 将会再次隐藏,同时 Change 字样将会改为 Change Again 。

以下是分步叙述如何使用 jQuery 实现以上效果,如果只想实现效果的童鞋可以直接看代码。

1.加载 jQuery 库,这是必须的。

2.把 comments.php 的评论者资料框代码和评论框代码按如下修改:

<?php if(isset($_COOKIE['comment_author_email_'.COOKIEHASH]) && isset($_COOKIE['comment_author_'.COOKIEHASH])) : ?>
  <div class="commentwelcome">
  <?php printf(__('欢迎发表评论! <strong>%1s</strong> '), $comment_author); ?><a id="edit_profile" title="重新填写资料" href="javascript:void(0);"><span>Change</span></a>
  </div>
<?php endif; ?>
 
<div class="<?php echo $comment_author_email ? 'hidden' : 'profile'; ?>">      
   <!-- 评论者资料框代码 -->
</div>    
<!-- 评论框代码 -->

 
在上面的代码中,会以 cookie 的方式记录评论者资料,并把评论者资料框的 div 赋予“ hidden ”的 class ,因此对于曾评论的访客,需要先隐藏起评论者资料框的 div ,可以使用 jQuery 的hide()事件隐藏该 div ,如果 jQuery 加载速度较慢,会出现打开页面时先出现 div ,片刻后再突然隐藏 div 的情况,这样显然不利用户体验,因此也可以直接写一条 css ——.hidden {display: none; }。

$('.hidden').hide();

3.然后再使用toggle()事件,slideUp()和slideDown()动画实现编辑评论者资料的功能。

$('#edit_profile').toggle(function(){
    $('.hidden').slideDown();
    },function(){
    $('.hidden').slideUp();
    });

 

4.为了提高用户体验,还需要使用text()方法在点击“Change”时把 Change 的字样改为“ Finish ”,当点击 Finish 时再把 Finish 字样改为“ Change Again ”。把以上代码整合,完整的 jQuery 代码如下:

jQuery(document).ready(function($){
$('.hidden').hide();
$('#edit_profile').toggle(function(){
    $('.hidden').slideDown();
    $('#edit_profile span').text("Finish");
    },function(){
    $('.hidden').slideUp();
    $('#edit_profile span').text("Change Again");
    });
 
});

PS:访客评论显示欢迎信息
我们通过判断$comment_author变量值是否为空,来确定访客是否在近期有评论(有 Cookie)。

if (!is_user_logged_in() && !empty($comment_author)) {
...
}

如果有,则在评论框上方显示欢迎信息:

if (!is_user_logged_in() && !empty($comment_author)) {
  $welcome_login = '<p id="welcome-login"><span>欢迎回来, <strong>' . $comment_author . '</strong>.</span>';
  $welcome_login .= ' <span id="toggle-author"><u>更改</u> <i class="icon-signout"></i></span></p>';

  $comments_args['comment_field'] = '</div>' . $comments_args['comment_field'];
  $comments_args['comment_notes_before'] = $welcome_login . '<div id="author-info" class="hide">';
}

以上代码,需要添加到主题的 comment.php 文件 comment_form($comments_args) 方法调用之前。

接下来,我们通过 Javascript 来实现访客信息更改:

/* Toggle comment user */
$('#comments').on('click', '#toggle-author', function () { 
  $('#author-info').slideToggle(function () { 
    if ($(this).is(':hidden')) {
      /* Update author name in the welcome messages */
      $('#welcome-login strong').html($('#author').val());

      /* Update the toggle action name */
      $('#toggle-author u').html('更改');
    } else {
      /* Update the toggle action name */
      $('#toggle-author u').html('隐藏');
    }  
  }); 
});

这样,如果用户需要更新信息时,可以点击欢迎信息右侧的更改按钮;修改完成之后,用户信息会在评论后更新。

Javascript 相关文章推荐
JQuery Tips(3) 关于$()包装集内元素的改变
Dec 14 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
Jan 02 Javascript
解决jQuery插件tipswindown与hintbox冲突
Nov 05 Javascript
25个优雅的jQuery Tooltip插件推荐
May 25 Javascript
jQuery-serialize()输出序列化form表单值的方法
Dec 26 Javascript
JavaScript和CSS通过expression实现Table居中显示
Jun 28 Javascript
在JavaScript中处理字符串之link()方法的使用
Jun 08 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
Aug 25 Javascript
JavaScript File分段上传
Mar 10 Javascript
详解如何使用webpack打包多页jquery项目
Feb 01 jQuery
使用 Vue 实现一个虚拟列表的方法
Aug 20 Javascript
js实现简单的日历显示效果函数示例
Nov 25 Javascript
jQuery插件formValidator实现表单验证
May 23 #Javascript
超链接怎么正确调用javascript函数
May 23 #Javascript
以WordPress为例讲解jQuery美化页面Title的方法
May 23 #Javascript
jQuery中选择器的基础使用教程
May 23 #Javascript
基于BootStrap的图片轮播效果展示实例代码
May 23 #Javascript
AngularJS上拉加载问题解决方法
May 23 #Javascript
在IE8上JS实现combobox支持拼音检索功能
May 23 #Javascript
You might like
php实现递归与无限分类的方法
2015/02/16 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
python 反向输出字符串的方法
2018/07/16 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
财务会计专业应届毕业生求职信
2013/10/18 职场文书
禁毒宣传标语
2014/06/19 职场文书
基层党支部整改方案
2014/10/25 职场文书
关于感谢信的范文
2015/01/23 职场文书
长城的导游词
2015/01/30 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
公司行政管理制度范本
2015/08/05 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
vue中三级导航的菜单权限控制
2021/03/31 Vue.js