基于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 01 Javascript
javascript学习笔记之10个原生技巧
May 21 Javascript
教你如何使用node.js制作代理服务器
Nov 26 Javascript
javascript中callee与caller的区别分析
Apr 20 Javascript
js实现人才网站职位选择功能的方法
Aug 14 Javascript
详解JavaScript数组和字符串中去除重复值的方法
Mar 07 Javascript
JS遍历页面所有对象属性及实现方法
Aug 01 Javascript
原生js实现吸顶效果
Mar 13 Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 Javascript
细说Vue组件的服务器端渲染的过程
May 30 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
Aug 03 Javascript
详细分析JavaScript中的深浅拷贝
Sep 17 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
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
短信提示使用 特效
2007/01/19 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
Python版微信红包分配算法
2015/05/04 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
Django日志及中间件模块应用案例
2020/09/10 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
职业教育毕业生求职信
2013/11/09 职场文书
中学运动会广播稿
2014/01/19 职场文书
超市端午节活动方案
2014/01/23 职场文书
向女朋友道歉的话
2015/01/20 职场文书
归元寺导游词
2015/02/06 职场文书
运动会通讯稿600字
2015/07/20 职场文书