基于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 07 Javascript
JavaScript中清空数组的三种方法分享
Apr 07 Javascript
5款JavaScript代码压缩工具推荐
Jul 07 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
Sep 28 Javascript
window.location 对象所包含的属性
Oct 10 Javascript
jquery动态加载js/css文件方法(自写小函数)
Oct 11 Javascript
jQuery在ul中显示某个li索引号的方法
Mar 17 Javascript
使用RequireJS优化JavaScript引用代码的方法
Jul 01 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
Aug 06 Javascript
servlet+jquery实现文件上传进度条示例代码
Jan 25 Javascript
jQuery实现ajax无刷新分页页码控件
Feb 28 Javascript
判断js数据类型的函数实例详解
May 23 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
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
关于laravel 子查询 &amp; join的使用
2019/10/16 PHP
实测jquery data()如何存值
2013/08/18 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
Python判断变量是否已经定义的方法
2014/08/18 Python
使用Python的判断语句模拟三目运算
2015/04/24 Python
python动态网页批量爬取
2016/02/14 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
Pycharm调试程序技巧小结
2020/08/08 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
证婚人搞笑证婚词
2014/01/10 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
理解python中装饰器的作用
2021/07/21 Python