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 相关文章推荐
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
Jan 08 Javascript
jquery实现标签上移、下移、置顶
Apr 26 Javascript
表单元素值获取方式js及java方式的简单实例
Oct 15 Javascript
Bootstrop实现多级下拉菜单功能
Nov 24 Javascript
js实现的xml对象转json功能示例
Dec 24 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
Jan 29 Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 Javascript
vue select二级联动第二级默认选中第一个option值的实例
Jan 10 Javascript
微信小程序使用swiper组件实现类3D轮播图
Aug 29 Javascript
angular 实时监听input框value值的变化触发函数方法
Aug 31 Javascript
angularJS实现不同视图同步刷新详解
Oct 09 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注销代码(session注销)
2012/05/31 PHP
php防止用户重复提交表单
2015/11/02 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
php表单处理操作
2017/11/16 PHP
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
Cython 三分钟入门教程
2009/09/17 Python
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
python 自动重连wifi windows的方法
2018/12/18 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
运动会解说词200字
2014/02/06 职场文书
工作表现自我评价
2014/02/08 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
Python基础之进程详解
2021/05/21 Python
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
sql server 累计求和实现代码
2022/02/28 SQL Server
详解Python内置模块Collections
2022/03/22 Python
Java实现简单小画板
2022/06/10 Java/Android