深入理解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操作select控件的几种方法
Jun 02 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
Sep 26 Javascript
javaScript arguments 对象使用介绍
Oct 18 Javascript
JavaScript中使用arguments获得函数传参个数实例
Aug 27 Javascript
Backbone.js中的集合详解
Jan 14 Javascript
理解AngularJs指令
Dec 10 Javascript
jQuery实现鼠标选文字发新浪微博的方法
Apr 02 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
angularJs的ng-class切换class
Jun 23 Javascript
JavaScript生成指定范围随机数和随机序列的方法
May 05 Javascript
Vue全局loading及错误提示的思路与实现
Aug 09 Javascript
JavaScript嵌入百度地图API的最详细方法
Apr 16 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+MYSQL开发工具及资源收藏
2007/01/02 PHP
PHP 数组遍历顺序理解
2009/09/09 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
js实现每日签到功能
2018/11/29 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
python遍历数组的方法小结
2015/04/30 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
农药学硕士毕业生自荐信
2013/09/25 职场文书
2014年医务科工作总结
2014/12/18 职场文书
单位介绍信格式
2015/01/31 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
redis 解决库存并发问题实现数量控制
2022/04/08 Redis