深入理解JQuery keyUp和keyDown的区别

定义和用法
完整的 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>

(0)

相关推荐

  • jquery.hotkeys监听键盘按下事件keydown插件

    jquery.hotkeys文件下载:  http://xiazai.jb51.net/201405/yuanma/jquery_hotkeys(jb51.net).rar 参照了一下它的文档用法,我们可以这样使用: 复制代码 代码如下: <script src="jquery-1.4.1.min.js" type="text/javascript"></script>    <script src="jquery.hotke

  • 打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)

    最近做项目,我负责做网页前端,客户需要利用触摸屏进行操作,不外接鼠标键盘,但要求能录入文字,包括数字,英文,中文.思考了一下,决定用JS实现虚拟键盘. 首先上网搜索了一下JS虚拟键盘,在经过仔细筛选后,相中了VirtualKeyboard,一款功能强大的JS虚拟键盘插件. 先简单介绍一下VirtualKeyboard,它内置了100多种键盘布局和200多种输入法,9套可选皮肤方案,而且支持自建输入法,功能相当强大. 先附上下载地址,目前的最新版本3.94:http://www.coralloso

  • jQuery 获取页面li数组并删除不在数组中的key

    先给大家说下应用场景: 获取页面 li 下面 key的值,添加到 arr数组 删除车型不在arr 数组中的value值. 示例代码: var getSaleModels = function(brand_id){ if(brand_id){ var li = $(".pinpai-chexing"+brand_id+" li"); var arr = new Array(); if (li.length > 0){ li.each(function(index

  • jquery获得keycode的示例代码

    如下所示: 复制代码 代码如下: txtSearch:文本框ID $("#txtSearch").keyup(function (event) {    var keycode = event.which;    if (keycode == 13) {        alert('你已经按下回车键'); } }); 或者 xObj.keyup(function(event){      //获取当前按键的键值      //jQuery的event对象上有一个which的属性可以获得

  • jquery keypress,keyup,onpropertychange键盘事件

    起初用js 的onkeyup事件,但始终没能触发.该事件不知道别的什么地方监视了,js的事件有传递,也可以阻断,蛮麻烦,情况太多.找了好久,终于找到了一种解决方案,通过onpropertychange事件可以迎刃而解. 复制代码 代码如下: $("#textboxID").bind("onpropertychange", function(){ //alert( $(this).text() ); //自动截取的逻辑代码 }); firefox没有onpropert

  • jquery HotKeys轻松搞定键盘事件代码

    使用方法: 复制代码 代码如下: $.hotkeys.add('键名', function(){ 要实现的目的}); //键名可以是单键,也可以是组合键例如:ctrl+c就表示同时按下ctrl和c. 取消某个键的事件: 复制代码 代码如下: $.hotkeys.remove('键名'); 具体演示效果请转到我专门翻译的一个页面,你可以自己测试特殊键和组合键:http://img.jb51.net/online/jquery_HotKeys.html 下载插件地址::http://code.goo

  • ff下JQuery无法监听input的keyup事件的解决方法

    复制代码 代码如下: $(document).ready(function(){    $('#news_title').bind('input',fun).bind('keyup',fun);}); //function listvar fun=function(){    value=$(this).val();    $('.prev').text(value);} 注: bind('input',fun)  用于ff下keyup bind('keyup',fun) 用于ie

  • 深入理解JQuery keyUp和keyDown的区别

    定义和用法完整的 key press 过程分为两个部分:1. 按键被按下:2. 按键被松开. 当按钮被按下时,发生 keydown 事件. keydown() 方法触发 keydown 事件,或规定当发生 keydown 事件时运行的函数. 复制代码 代码如下: <html><head><script type="text/javascript" src="/jquery/jquery.js"></script><

  • 深入理解jQuery 事件处理

    浏览器的事件模型 DOM第0级事件模型 1.Event实例 他的属性提供了关于当前正被处理的已触发事件的大量信息.这包括一些细节,比如在哪个元素上触发的事件.鼠标事件的坐标以及键盘事件中单击了哪个键. 2.事件冒泡 当触发 dom 树中一个元素上的事件时,事件模型会检查这个元素是否已经创建了特定的事件处理器.如果是,就会调用已创建的事件处理器.然后,事件模型会检查目标元素的父元素,看其是否已经为此事件类型创建了处理器.如果是,就调用已创建的处理器,之后检查它的父元素,以及父元素的父元素,以此类推

  • 深入理解jQuery之事件移除

    有时候事件执行完了,想取消事件的效果可以通过一定的办法来处理.比如bind()方法,可以通过unbind()方法来移除事件的效果. 比如下面的一个案例: <script type="text/javascript"> $(function(){ $('#btn').bind("click", function(){ $('#test').append("<p>我的绑定函数1</p>"); }).bind(&qu

  • 深入理解node exports和module.exports区别

    我们只需知道三点即可知道 exports 和 module.exports 的区别了: 1.exports 是指向的 module.exports 的引用 2.module.exports 初始值为一个空对象 {},所以 exports 初始值也是 {} 3.require() 返回的是 module.exports 而不是 exports 所以: • 我们通过 var name ='nswbmw'; exports.name = name; exports.sayName =function(

  • 深入理解jQuery之防止冒泡事件

    冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 下面是html代码部分: <body> <div id="content"> 外层div元素 <span>内层span元素</span> 外层div元素 </div> <div id="msg"></div> </body> 对应的jQuery代码如下: <script type="text/

  • 浅谈jQuery before和insertBefore的区别

    jQuery 中利用before和insertBefore可以达到在指定元素前插入指定内容,写法上有区别 先看一个例子: 在<div class='div1'>div1</div>前面插入<div>toInsertContent</div> 实现: $('<div>toInsertContent</div>').insertBefore($('.div1')); 或者 $('.div1').before('<div>toI

  • 深入理解jquery自定义动画animate()

    在以前很长一段时间里,网页上的各种特效还需要采用flash 在进行.但最近几年里,我们已经很少看到这种情况了,绝大部分已经使用JavaScript 动画效果来取代flash.这里 说的取代是网页特效部分,而不是动画.网页特效比如:渐变菜单.渐进显示.图片轮播等:而动画比如:故事情节广告.MV 等等. 如果复制当前代码进行在本地测试的时候,请注意把不需要(其他功能展示)的代码注释掉. <!DOCTYPE html> <html xmlns="http://www.w3.org/1

  • 深入理解jQuery中的事件冒泡

    1.什么是冒泡 eg: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>事件冒泡</title> <script src="

  • 浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法

    1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的  $()  这个符号,实际上这个符号在JQuery中相当于JQuery(),即$(this)=jquery();也就是说,这样可以返回一个jquery对象.那么,当你在网页中alert($('#id'));时,会弹出一个[object Object ],这个object对象,也就是jquery对象了. 那么,我们

  • 深入理解JQuery循环绑定事件

    深入理解JQuery循环绑定事件 <html> <head> <title></title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> </head> <body> <script typ

随机推荐