深入理解JQuery keyUp和keyDown的区别


Posted in Javascript onDecember 12, 2013

定义和用法
完整的 key press 过程分为两个部分:1. 按键被按下;2. 按键被松开。

当按钮被按下时,发生 keydown 事件。

keydown() 方法触发 keydown 事件,或规定当发生 keydown 事件时运行的函数。

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("input").keydown(function(){
    $("input").css("background-color","#FFFFCC");
  });
  $("input").keyup(function(){
    $("input").css("background-color","#D6D6FF");
  });
});
</script>
</head>
<body>
Enter your name: <input type="text" />
<p>当发生 keydown 和 keyup 事件时,输入域会改变颜色。请试着在其中输入内容。</p>
</body>
</html>

众所周知,jquery封装了很多事件交互方法,这里讲到的问题在原生js中也是有的。

keyup是在用户将按键抬起的时候才会触发的,属于整个按键过程中的最后阶段,所以有其特定的用处,就是在左侧输入,右侧同步显示的过程中很有用处。典型的例子就是邮件编辑预览的应用。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>无标题页</title>
    <script src="JS/jquery-1.4.2.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function() {
            $('#t1').live('keyup', function() {
                $('#v1').text($(this).val());
            });
            $('#t2').live('keydown', function() {
                $('#v2').text($(this).val());
            });
            $('#t3').live('keypress', function() {
                $('#v3').text($(this).val());
            });
        });    
    </script>
</head>
<body>
    <textarea id="t1"></textarea>
    <div id="v1">
    </div>
    <textarea id="t2"></textarea>
    <div id="v2">
    </div>
    <textarea id="t3"></textarea>
    <div id="v3">
    </div>
</body>
</html>

这里分别应用了三种事件,其中t1能够完整的同步到v1中,而keypress和keydown总是少最后一个字符,这样就说明了这三种事件触发的小小区别,keydown是在按下时触发,不能得到最后的输入结果,keypress也是一样。

例如:keydown绑定文本框,每次点击触发事件,在获取文本框的值,总是打印上次操作时文本框的内容,

这是因为keydown操作后,事件触发了,但值还未显示在文本框中,所以这类操作要用keyup 一个完整的按键动作后,才可以获取文本框的值。

keydown与keypress更适用于通过键盘控制页面类功能的实现。

获取键盘点击的键位:

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("input").keydown(function(event){ 
    $("div").html("Key: " + event.which);
  });
});
</script>
</head>
<body>
请随意键入一些字符:<input type="text" />
<p>当您在上面的框中键入文本时,下面的 div 会显示键位序号。</p>
<div />
</body>
</html>
Javascript 相关文章推荐
这段js代码得节约你多少时间
Dec 20 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
May 23 Javascript
jQuery之ajax删除详解
Feb 27 Javascript
js函数模拟显示桌面.scf程序示例
Apr 20 Javascript
jQuery Real Person验证码插件防止表单自动提交
Nov 06 Javascript
Bootstrap每天必学之导航条
Nov 27 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 Javascript
详解基于vue-router的动态权限控制实现方案
Sep 28 Javascript
详解Nuxt.js部署及踩过的坑
Aug 07 Javascript
详解JavaScript事件循环机制
Sep 07 Javascript
React通过redux-persist持久化数据存储的方法示例
Feb 14 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
Dec 12 #Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
Dec 12 #Javascript
解析prototype,JQuery中跳出each循环的方法
Dec 12 #Javascript
如何从jQuery的ajax请求中删除X-Requested-With
Dec 11 #Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
Dec 11 #Javascript
js中对象的声明方式以及数组的一些用法示例
Dec 11 #Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
Dec 11 #Javascript
You might like
php 数组二分法查找函数代码
2010/02/16 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
一看就懂得Python的math模块
2018/10/21 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
python的faker库用法
2019/11/28 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
团日活动总结
2014/04/28 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
颐和园导游词
2015/01/30 职场文书
新员工入职感言范文!
2019/07/04 职场文书
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis