深入理解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 相关文章推荐
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
May 25 Javascript
datagrid框架的删除添加与修改
Apr 08 Javascript
详解基于Bootstrap扁平化的后台框架Ace
Nov 27 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
Dec 04 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
Feb 22 Javascript
AngularJs expression详解及简单示例
Sep 01 Javascript
JavaScript使用Ajax上传文件的示例代码
Aug 10 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
Oct 23 Javascript
js生成word中图片处理方法
Jan 06 Javascript
vue.extend实现alert模态框弹窗组件
Apr 28 Javascript
详解javascript void(0)
Jul 13 Javascript
vue 中this.$set 动态绑定数据的案例讲解
Jan 29 Vue.js
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开发GUI
2006/10/09 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
跟老齐学Python之复习if语句
2014/10/02 Python
详细解读Python中的__init__()方法
2015/05/02 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
python中pip的安装与使用教程
2018/08/10 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
python动态视频下载器的实现方法
2019/09/16 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
PyTorch安装与基本使用详解
2020/08/31 Python
农业大学毕业生的个人自我评价
2013/10/11 职场文书
校长岗位职责
2013/11/26 职场文书
公司请假条范文
2014/04/11 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
redis 查看所有的key方式
2021/05/07 Redis
mysql事务对效率的影响分析总结
2021/10/24 MySQL
Python+tkinter实现高清图片保存
2022/03/13 Python