深入理解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 相关文章推荐
jQuery Tools tooltip使用说明
Jul 14 Javascript
关于全局变量和局部变量的那些事
Jan 11 Javascript
对于this和$(this)的个人理解
Sep 08 Javascript
JS来动态的修改url实现对url的增删查改
Sep 05 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
angular.js之路由的选择方法
Sep 24 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
Jan 06 Javascript
微信小程序 检查接口状态实例详解
Jun 23 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
Oct 16 Javascript
vue复合组件实现注册表单功能
Nov 06 Javascript
深入webpack打包原理及loader和plugin的实现
May 06 Javascript
原生js实现自定义消息提示框
Nov 19 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
封装好的js判断操作系统与浏览器代码分享
2015/01/09 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
Javascript的this详解
2019/03/23 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
Python正则表达式完全指南
2017/05/25 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
python列表返回重复数据的下标
2020/02/10 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
全球虚拟主机商:HostGator
2017/02/06 全球购物
仓库文员岗位职责
2014/04/06 职场文书
《学会合作》教学反思
2014/04/12 职场文书
小学教师师德演讲稿
2014/05/06 职场文书
文员试用期转正自我鉴定
2014/09/14 职场文书
Python数据分析入门之数据读取与存储
2021/05/13 Python
springboot用户数据修改的详细实现
2022/04/06 Java/Android
基于docker安装zabbix的详细教程
2022/06/05 Servers