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 相关文章推荐
javascript面向对象之二 命名空间
Feb 08 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
Mar 07 Javascript
jquery动态增加删除表格行的小例子
Nov 14 Javascript
详解JavaScript中Date.UTC()方法的使用
Jun 12 Javascript
基于jquery实现无限级树形菜单
Mar 22 Javascript
jquery+ajax+text文本框实现智能提示完整实例
Jul 09 Javascript
jsp 网站引入外部css或者js失效问题解决
Oct 31 Javascript
jquery.validate表单验证插件使用方法解析
Nov 07 Javascript
js选项卡的制作方法
Jan 23 Javascript
基于JavaScript实现评论框展开和隐藏功能
Aug 25 Javascript
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 jQuery
JS实现返回上一页并刷新页面的方法分析
Jul 16 Javascript
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在文件指定行中写入代码的方法
2012/05/23 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
python自动化测试之连接几组测试包实例
2014/09/28 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
python实现多线程网页下载器
2018/04/15 Python
Python制作exe文件简单流程
2019/01/24 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
美国温暖商店:The Warming Store
2018/12/15 全球购物
金山毒霸系列的笔试题
2013/04/13 面试题
主持人婚宴答谢词
2014/01/28 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
酒店前台辞职书
2015/02/26 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL