Jquery实现回车键Enter切换焦点

简介:
系统默认情况下,使用Tab按键切换页面元素的焦点,有没有想过回车键Enter也可以实现这种功能,并且具有良好的用户体验。接下来我们使用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、 运行程序
 
 
那页面中如果有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、 运行效果









本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/449937,如需转载请自行联系原作者

目录
相关文章
|
JavaScript 前端开发
|
JavaScript
jquery 获取回车键事件
$(document).ready(function(){ $("html").die().live("keydown",function(event){ if(event.
657 0
|
JavaScript 前端开发
|
JavaScript 前端开发 .NET
Jquery实现回车键Enter切换焦点
系统默认情况下,使用Tab按键切换页面元素的焦点,有没有想过回车键Enter也可以实现这种功能,并且具有良好的用户体验。接下来我们使用Jquery实现回车键Enter切换焦点,此代码在常用浏览器IE7, IE8, Firefox 3, Chrome 2 和 Safari 4测试通过。
862 0
|
6月前
|
JavaScript
Jquery插件知识之Jquery.cookie实现页面传值
Jquery插件知识之Jquery.cookie实现页面传值
36 0
|
7月前
|
JavaScript
jQuery 插件自用列表
jQuery 插件自用列表
29 0
|
3月前
|
JavaScript
jQuery图片延迟加载插件jQuery.lazyload
jQuery图片延迟加载插件jQuery.lazyload
|
3月前
|
JavaScript 数据可视化 前端开发
jQuery-JS插件-第9次课-使用插件让领导对你刮目相看-附案例作业
jQuery-JS插件-第9次课-使用插件让领导对你刮目相看-附案例作业
19 0
|
3月前
|
JavaScript 前端开发
开发jQuery插件这些就够了
开发jQuery插件这些就够了
28 0