jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)


Posted in Javascript onMay 11, 2014

键盘事件处理所有用户在键盘敲击的情况,不管在文本输入区域内部还是外部。键盘事件在不同的浏览器中作用的范围是不一样的,通常这种键盘事件可以作用于 Form元素,a标签元素,window ,document这样的元素上。在所有可以获得交点的元素上是可以触发键盘事件的,可以获得焦点的元素可以这样理解,在使用Tab键的时候可以跳跃到的元素就是可以使用键盘事件的元(在没有为这些元素设置tabindex属性值的情况下,当tabindex设置为负数的时候,在使用Tab键的时候就不会获得焦点)。

    键盘事件可以传递一个参数event,其实所有的jQuery事件都可以传递这么一个参数,这个event是一个对象,其包括一些属性,在触发事件的时候可以通过event来获得一些关于事件的值,比如在使用键盘的时候可以使用event.keyCode来获得所按下键的ASCII码的值。见下文

1:keydown()事件是键盘点击时触发的第一个键盘事件,如果用户继续按住键位,keydown事件会持续进行。

      $('input').keydown(function(event){
        alert(event.keyCode);
        });

      通过键盘返回的值可以实现更多的关于这些元素的控制,比如说上下左右键,分别是:38,40,37,39 。
2:keypress()事件和keydown是差不多的,只有一个例外,如果需要阻止按键的默认行为,你必须是哟就keypress事件。

3:keyup()事件是最后一个发生的事件(在keydown事件之后),不想keydown事件,该事件在松开键盘是仅触发一次(因为松开键盘并不是一个持续的状态)。

      $('input').keyup(funciton(){
          alert('keyup function is running!!');
        });

4:在jQuery中keydown,keypress,keyup事件是按一定的顺序执行的。

        $('input').keyup(function(){
          console.log('keyup');
          });
        $('input').keydown(function(){
          console.log('keydown');
          });
        $('input').keypress(function(){
          console.log('keypress');
          });

      执行结果是:keydown ,keypress ,keyup .
      在这里不使用alert是因为在alert的时候会阻止一些事件的发生,在这里是会阻止keyup事件的发生,要想实验这端代码,可以在Firefox下进行,需要在浏览器上装上firebug这个插件。放心安装,因为Firefox是一款开源的浏览器。相信开源软件。

jQuery处理键盘事件有三个函数,根据事件发生的顺序分别是:

keydown();
keyup();
keypress();

keydown()

keydown事件会在键盘按下时触发,可以在绑定的函数中欧能够返回false来防止触发浏览器的默认事件.

keyup()

keyup事件会在按键释放时触发,也就是你按下键盘起来后的事件

keypress()

keypress事件会在敲击按键时触发,我们可以理解为按下并抬起同一个按键

 我们怎么才能获取我按下的是A还是Z还是回车按钮呢?

键盘事件可以传递一个参数event,其实说有的jQuery事件函数中都可以传递这么一个参数

$('input').keydown(function(event){
alert(event.keyCode);
});

上面代码中的,event.keyCode就可以帮助我们获取到我们按下了什么按键,他返回的是ascII码,比如说上下左右键,分别是38,40,37,39

如果我们要实现ctrl+Enter就是ctrl+回车提交表单

$(document).keypress(function(e) {
if (e.ctrlKey && e.which == 13)
$("form").submit();
})

其它参考信息:

预备知识

1.数字0键值48..数字9键值57
2.a键值97..z键值122;A键值65..Z键值90
3.+键值43;-键值45;.键值46;退格8;tab键值9;
4.event在ie中是全局的,在firefox是临时对象,需要传递参数

*/ 
jQuery.extend({ 
/*=========================================================================== 
功能描述:取得按键的值 
调用方法: 
jQuery.getKeyNum(event); 
*/ 
getKeyNum:function(e){ 
var keynum; 
if(window.event){ // IE 
keynum = event.keyCode; 
} 
else if(e.which){ // Netscape/Firefox/Opera 
keynum = e.which; 
} 
return keynum; 
}, 
/*=========================================================================== 
功能描述:判断是否是整数,限制编辑框只能输入数字 
调用方法: 
<input type="text" onkeypress="return jQuery.isInt(event);" /> 
待解决问题: 
firefox下tab键不起作用。 
*/ 
isInt:function(e){ 
var keynum = this.getKeyNum(e); 
if(keynum >= 48 && keynum <= 57 || keynum == 8){//firefox下退格需判断8 
return true; 
} 
return false; 
}, 
/*=========================================================================== 
功能描述:判断是否是小数,限制编辑框只能输入数字,只能输入一个小数点。 
调用方法: 
<input type="text" onkeypress="return jQuery.isFloat(this,event);" /> 
*/ 
isFloat:function(txt,e){ 
var keynum = this.getKeyNum(e); 
if(keynum == 46){//输入小数点 
if(txt.value.length == 0){ 
return false; 
}else if(txt.value.indexOf('.') >= 0){ 
return false; 
}else{ 
return true; 
} 
} 
if(this.isInt(e)){ 
return true; 
} 
return false; 
} 
});
Javascript 相关文章推荐
做网页的一些技巧(续)
Feb 01 Javascript
javaScript parseInt字符转化为数字函数使用小结
Nov 05 Javascript
flash 得到自身url参数的代码
Nov 15 Javascript
jQuery ready函数滥用分析
Feb 16 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
Nov 26 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
May 28 Javascript
JQuery $.each遍历JavaScript数组对象实例
Sep 01 Javascript
jQuery功能函数详解
Feb 01 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
Mar 02 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
May 26 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
May 31 Javascript
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
jquery 按键盘上的enter事件
May 11 #Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 #Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
May 11 #Javascript
基于Jquery实现键盘按键监听
May 11 #Javascript
js判断游览器类型及版本号的代码
May 11 #Javascript
jquery实现文本框数量加减功能的例子分享
May 10 #Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
May 10 #Javascript
You might like
简单的php写入数据库类代码分享
2011/07/26 PHP
深入php常用函数的使用汇总
2013/06/08 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
php实现文件编码批量转换
2014/03/10 PHP
PHP引用(&amp;)各种使用方法实例详解
2014/03/20 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
JQuery 文本框使用小结
2010/05/22 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
理解Javascript闭包
2013/11/01 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
vue实现弹幕功能
2019/10/25 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
python中sys.argv参数用法实例分析
2015/05/20 Python
python thrift搭建服务端和客户端测试程序
2018/01/17 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
python配置文件写入过程详解
2019/10/19 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
人力资源管理专业应届生求职信
2014/04/24 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
统计员岗位职责
2015/02/11 职场文书
物业公司管理制度
2015/08/05 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
python元组打包和解包过程详解
2021/08/02 Python
Python装饰器详细介绍
2022/03/25 Python
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers