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 相关文章推荐
javascript arguments使用示例
Dec 16 Javascript
JS实现可调整倒计时间代码分享
Aug 18 Javascript
使用canvas实现仿新浪微博头像截取上传功能
Sep 02 Javascript
JS实现添加,替换,删除节点元素的方法
Jun 30 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
Nov 03 Javascript
输入框点击时边框变色效果的实现方法
Dec 26 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
vue组件之Alert的实现代码
Oct 17 Javascript
详解Javascript 中的 class、构造函数、工厂函数
Dec 20 Javascript
自定义vue组件发布到npm的方法
May 09 Javascript
微信小程序可滑动月日历组件使用详解
Oct 21 Javascript
详解Vue数据驱动原理
Nov 17 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 循环删除无限分类子节点的实现代码
2013/06/21 PHP
解析php取整的几种方式
2013/06/25 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
php中上传文件的的解决方案
2018/09/25 PHP
js里的prototype使用示例
2010/11/19 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
使用Phantomjs和Node完成网页的截屏快照的方法
2019/07/16 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
python类装饰器用法实例
2015/06/04 Python
python基础学习之如何对元组各个元素进行命名详解
2018/07/12 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
业务员薪酬管理制度
2014/01/15 职场文书
婚前协议书怎么写
2014/04/15 职场文书
化工专业自荐书
2014/06/16 职场文书
初婚初育证明范本
2014/11/24 职场文书
村干部任职承诺书
2015/01/21 职场文书
实习单位鉴定意见
2015/06/04 职场文书
导游词之湖北武当山
2019/09/23 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL