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 相关文章推荐
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
Sep 08 Javascript
简单的ajax连接库分享(不用jquery的ajax)
Jan 19 Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 Javascript
上传图片js判断图片尺寸和格式兼容IE
Sep 01 Javascript
JavaScript获取网页表单提交方式的方法
Apr 02 Javascript
JavaScript使用Replace进行字符串替换的方法
Apr 14 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
Aug 09 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
Jun 30 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
Oct 16 Javascript
jquery的$().each和$.each的区别
Jan 18 jQuery
React+Antd+Redux实现待办事件的方法
Mar 14 Javascript
JS常用排序方法实例代码解析
Mar 03 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 获取目录下的图片并随机显示的代码
2009/12/28 PHP
paypal即时到账php实现代码
2010/11/28 PHP
Zend的AutoLoad机制介绍
2012/09/27 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
浅谈javascript函数式编程
2015/09/06 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2016/12/08 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
什么是"引用"?申明和使用"引用"要注意哪些问题?
2016/03/03 面试题
介绍一下常见的木马种类
2014/11/15 面试题
文秘人员工作职责
2014/01/31 职场文书
专业技术职务聘任书
2014/03/29 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
企业年检委托书范本
2014/10/14 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
护理心得体会范文
2016/01/22 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers