基于Jquery的实现回车键Enter切换焦点


Posted in Javascript onSeptember 14, 2010

接下来我们使用Jquery实现回车键Enter切换焦点,此代码在常用浏览器IE7, IE8, Firefox 3, Chrome 2 和 Safari 4测试通过。
使用的开发工具是微软VS2010+Jquery框架。
实现步骤如下
1、 首先引用Jquery类库
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
2、 Javascript代码

<script type="text/javascript"> 
$(function () { 
$('input:text:first').focus(); 
var $inp = $('input:text'); 
$inp.bind('keydown', function (e) { 
var key = e.which; 
if (key == 13) { 
e.preventDefault(); 
var nxtIdx = $inp.index(this) + 1; 
$(":input:text:eq(" + nxtIdx + ")").focus(); 
} 
}); 
}); 
</script>

分析:
$('input:text:first').focus();
页面初始化时,焦点定位第一个文本框内
var $inp = $('input:text');
取的type=文本框的元素集合
$inp.bind('keydown', function (e) {}
给文本框集合绑定'keydown'事件
var key = e.which;
取的当前按下的键值 比如Enter的键值=13
e.preventDefault();
可以阻止它的默认行为的发生而发生其他的事情,在这里我们组织PostBack发生,而是切换焦点。另外一个相近的方法是stopPropagation,它起到阻止js事件冒泡的作用。
事件代理用到了两个在JavaSciprt事件中常被忽略的特性:事件冒泡以及目标元素。当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。对任何一个事件来说,其目标元素都是原始元素,在我们的这个例子中也就是按钮。目标元素它在我们的事件对象中以属性的形式出现。使用事件代理的话我们可以把事件处理器添加到一个元素上,等待事件从它的子级元素里冒泡上来,并且可以很方便地判断出这个事件是从哪个元素开始的。
var nxtIdx = $inp.index(this) + 1;
取的元素集合inp中的下一个元素索引
$(":input:text:eq(" + nxtIdx + ")").focus();
定位焦点到集合的下一个元素
3.、HTML代码
<div> 
<asp:TextBox ID="txt1" runat="server" /><br /> 
<asp:TextBox ID="txt2" runat="server" /><br /> 
<asp:TextBox ID="txt3" runat="server" /><br /> 
<asp:TextBox ID="txt4" runat="server" /><br /> 
</div>

分析:页面上存放四个文本框
3、 运行程序
基于Jquery的实现回车键Enter切换焦点
那页面中如果有TextArea 元素,我们如何使用Enter切换焦点呢,办法是有的,如下充分运用了Jquery的一些特性。

4、 HTML代码

<div> 
<asp:TextBox ID="tb1" runat="server" class="cls" /><br /> 
<asp:TextBox ID="tb2" runat="server" class="cls" /><br /> 
<asp:TextBox ID="tb3" TextMode="MultiLine" runat="server" class="cls" /><br /> 
<asp:TextBox ID="tb4" runat="server" class="cls" /><br /> 
</div>

分析:
页面中所以的TextBox 引用Class=”cls”,便于后期的对页面元素的Jquery查询。

5、 Javascript代码

<script type="text/javascript"> 
$(function () { 
$('input:text:first').focus(); 
var $inp = $('.cls'); 
$inp.bind('keydown', function (e) { 
var key = e.which; 
if (key == 13) { 
e.preventDefault(); 
var nxtIdx = $inp.index(this) + 1; 
$(".cls:eq(" + nxtIdx + ")").focus(); 
} 
}); 
}); 
</script>

分析:
var $inp = $('.cls');
取的样式为cls的所有元素 赋值给变量inp
6、 运行效果
基于Jquery的实现回车键Enter切换焦点
作者:灵动生活
Javascript 相关文章推荐
JavaScript中的一些定位属性[图解]
Jul 14 Javascript
javascript中String类的subString()方法和slice()方法
May 24 Javascript
javascript学习笔记(十二) RegExp类型介绍
Jun 20 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
Aug 07 Javascript
jQuery手机拨号界面特效代码分享
Aug 27 Javascript
jQuery可见性过滤选择器用法示例
Sep 09 Javascript
原生JavaScript制作计算器
Oct 16 Javascript
微信小程序 教程之wxapp视图容器 swiper
Oct 19 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
Nov 25 Javascript
清除js缓存的多种方法总结
Dec 09 Javascript
使用Promise链式调用解决多个异步回调的问题
Jan 15 Javascript
JavaScript异步操作中串行和并行
Nov 20 Javascript
js输出列表实现代码
Sep 12 #Javascript
JavaScript日历实现代码
Sep 12 #Javascript
某页码显示的helper 少量调整,另附js版
Sep 12 #Javascript
网页中CDATA标记的说明
Sep 12 #Javascript
JavaScript小技巧 2.5 则
Sep 12 #Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
Sep 12 #Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
Sep 12 #Javascript
You might like
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
JavaScript CSS修改学习第一章 查找位置
2010/02/19 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
JS中的作用域链
2017/03/01 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
日常整理python执行系统命令的常见方法(全)
2015/10/22 Python
Python图算法实例分析
2016/08/13 Python
Python yield 使用方法浅析
2017/05/20 Python
python文件编写好后如何实践
2020/07/07 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
体育教育个人自荐信范文
2013/12/01 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
Golang 切片(Slice)实现增删改查
2022/04/22 Golang
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android
nginx七层负载均衡配置详解
2022/07/15 Servers