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 相关文章推荐
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
Mar 10 Javascript
用apply让javascript函数仅执行一次的代码
Jun 27 Javascript
图片onload事件触发问题解决方法
Jul 31 Javascript
关于编写性能高效的javascript事件的技术
Nov 28 Javascript
jQuery中position()方法用法实例
Jan 16 Javascript
Bootstrap布局方式详解
May 27 Javascript
JS 实现可停顿的垂直滚动实例代码
Nov 23 Javascript
jQuery实现6位数字密码输入框
Dec 29 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
Feb 09 Javascript
vue bus全局事件中心简单Demo详解
Feb 26 Javascript
Javascript操作select控件代码实例
Feb 14 Javascript
Vue Render函数原理及代码实例解析
Jul 30 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
写一个用户在线显示的程序
2006/10/09 PHP
php 在文件指定行插入数据的代码
2010/05/08 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
PDO::query讲解
2019/01/29 PHP
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
全面了解构造函数继承关键apply call
2016/07/26 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
python贪吃蛇游戏代码
2020/04/18 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
python函数的作用域及关键字详解
2019/08/20 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
python实现在线翻译
2020/06/18 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
利用CSS3的border-radius绘制太极及爱心图案示例
2016/05/17 HTML / CSS
ECHT官方网站:男女健身服
2020/02/14 全球购物
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
运动会广播稿150字
2014/02/19 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
期末复习计划
2015/01/19 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP