基于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 相关文章推荐
脚本之家贴图转换+转贴工具用到的js代码超级推荐
Apr 05 Javascript
JavaScript与DropDownList 区别分析
Jan 01 Javascript
js+JQuery返回顶部功能如何实现
Dec 03 Javascript
使用CoffeeScrip优美方式编写javascript代码
Oct 28 Javascript
Flow之一个新的Javascript静态类型检查器
Dec 21 Javascript
基于WebUploader的文件上传js插件
Aug 19 Javascript
详解如何使用webpack在vue项目中写jsx语法
Nov 08 Javascript
p5.js入门教程之小球动画示例代码
Mar 15 Javascript
vue项目中mock.js的使用及基本用法
May 22 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
Jul 19 Javascript
jquery实现轮播图特效
Apr 12 jQuery
react-router-dom 嵌套路由的实现
May 02 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
php5.3 goto函数介绍和示例
2014/03/21 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
分享PHP守护进程类
2015/12/30 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
php简单统计在线人数的方法
2016/05/10 PHP
php微信开发自定义菜单
2016/08/27 PHP
jquery对表单操作2
2011/04/06 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
python实现的一个p2p文件传输实例
2014/06/04 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
替换python字典中的key值方法
2018/07/06 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
简历中的自我评价怎么写
2014/01/29 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
预备党员公开承诺书
2014/05/28 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
MySQL七大JOIN的具体使用
2022/02/28 MySQL
TypeScript 内置高级类型编程示例
2022/09/23 Javascript