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 相关文章推荐
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
Feb 22 Javascript
javascript 鼠标滚轮事件
Apr 09 Javascript
关于jquery input textare 事件绑定及用法学习
Apr 03 Javascript
jquery 获取标签名(tagName)示例代码
Jul 11 Javascript
通过url查找a元素并点击
Apr 09 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
Jul 28 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
Mar 09 Javascript
使用react-router4.0实现重定向和404功能的方法
Aug 28 Javascript
jQuery EasyUI Layout实现tabs标签的实例
Sep 26 jQuery
angularjs中$http异步上传Excel文件方法
Feb 23 Javascript
vue.js打包之后可能会遇到的坑!
Jun 03 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
May 16 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运行时强制显示出错信息的代码
2011/04/20 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
Git命令之分支详解
2021/03/02 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
python批量制作雷达图的实现方法
2016/07/26 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
python logging模块的使用
2020/09/07 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
座谈会主持词
2014/03/20 职场文书
新教师2015年度工作总结
2015/07/22 职场文书