深入理解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 相关文章推荐
文字幻灯片
Jun 26 Javascript
js实现的网站首页随机公告随机公告
Mar 14 Javascript
js中关于一个分号的崩溃示例
Nov 11 Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 Javascript
jquery及js实现动态加载js文件的方法
Jan 21 Javascript
dedecms页面如何获取会员状态的实例代码
Mar 15 Javascript
模仿password输入框的实现代码
Jun 07 Javascript
详解JavaScript对象类型
Jun 16 Javascript
jQuery实现简单的计时器功能实例分析
Aug 29 jQuery
js实现一个简单的MVVM框架示例
Jan 15 Javascript
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
JS的深浅复制详细
Oct 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中文乱码的解决方法
2006/12/17 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
PHP实现变色验证码实例
2014/01/06 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
前端必学之PHP语法基础
2016/01/01 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
2020/08/26 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
Dom 是什么的详细说明
2010/10/25 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
深入理解python中的闭包和装饰器
2016/06/12 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
小学安全汇报材料
2014/08/14 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
2021/03/29 Python