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 相关文章推荐
关于可运行代码无法正常执行的使用说明
May 13 Javascript
jquery中eq和get的区别与使用方法
Apr 14 Javascript
JavaScript高级程序设计 DOM学习笔记
Sep 10 Javascript
js中top/parent/frame概述及案例应用
Feb 06 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
Nov 08 Javascript
node.js中的fs.lchownSync方法使用说明
Dec 16 Javascript
微信小程序图表插件(wx-charts)实例代码
Jan 17 Javascript
新手快速入门JavaScript装饰者模式与AOP
Jun 24 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
Nov 10 Javascript
微信小程序实现下滑到底部自动翻页功能
Mar 07 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
Aug 06 Javascript
通过实例解析javascript Date对象属性及方法
Nov 04 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中邮箱地址正则表达式实现与详解
2012/04/24 PHP
js文件中调用js的实现方法小结
2009/10/23 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
详解vue中axios的封装
2018/07/18 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
Python while 循环使用的简单实例
2016/06/08 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
python 实现倒排索引的方法
2018/12/25 Python
Python绘制热力图示例
2019/09/27 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
python 发送json数据操作实例分析
2019/10/15 Python
Python上下文管理器全实例详解
2019/11/12 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
高性能装备提升营地:Kammok
2019/02/27 全球购物
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
师范应届生教师求职信
2013/11/05 职场文书
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
合伙协议书范本
2014/04/21 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
项目经理任命书范本
2014/06/05 职场文书
学习十八大的心得体会
2014/09/01 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书