============回车实现Tab事件==========

  有时候我们希望回车事件绑定的是键盘的Tab事件。我的第一思路就是切换事件的keyCode,比如键盘事件按下的keyCode如果是13,我们将keyCode改为9。但是在实际编程中却未能实现此效果。于是只能自己通过手写JS脚本来调用input元素的focus()事件。

1.原来的一个普通的表单

        <form id="tttttttttttt" action="xxxx.html">
<input type="hidden" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="button" id="button" value="第一个按钮" />
<input type="submit" name="" id="" value="提交按钮" />
<button>按鈕</button>
</form>

我们发现当我们按下回车的时候会提交表单,触发表单的submit()事件。原因是有一个按钮的类型是submit。所以点击回车的时候触发了回车事件。

于是将上面的submit按钮改为button,在其click事件中提交表单。

        <form id="tttttttttttt" action="xxxx.html">
<input type="hidden" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="button" id="button" value="第一个按钮" />
<input type="button" name="" id="" value="提交按钮" onclick="$('#tttttttttttt').submit();" />
<button>按鈕</button>
</form>

我们发现当我们按下回车的时候会提交表单,触发表单的submit()事件。原因是有一个button,button默认的类型也是submit,所以也会触发表单提交。

将button的类型改为button。

        <form id="tttttttttttt" action="xxxx.html">
<input type="hidden" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="button" id="button" value="第一个按钮" />
<input type="button" name="" id="" value="提交按钮" onclick="$('#tttttttttttt').submit();" />
<button type="button">按鈕</button>
</form>

  这次再按下回车终于不是表单提交了。

2.jQuery 设置回车切换input的focus

  前提是表单中没有submit类型的按钮。针对下面的表单元素进行切换:

        <form id="tttttttttttt" action="xxxx.html">
<input type="hidden" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="text" name="" id="" value="" />
<br />
<input type="button" id="button" value="第一个按钮" />
<input type="button" name="" id="" value="提交按钮" onclick="$('#tttttttttttt').submit();" />
<button type="button">按鈕</button>
</form>

脚本如下: 

  思路:键盘中判断是否按下的是回车键,如果是回车键,获取表单下的所有的需要切换的input元素,然后与当前元素进行对比,如果相等,就将数组中的下一个元素聚焦(当然如果是最后一个元素的话将第一个元素聚焦)

    $(function(){
$("input").keydown(function(){
if(13 == event.keyCode){
var form = $("#tttttttttttt");
var inputEles = form.find("input:visible");
console.log("inputEles -> "+inputEles.length); //5
for(var i=0;i<inputEles.length;i++){
if($(inputEles[i]).is($(this))){//判断两个jQuery对象是否相等用is
if(i == inputEles.length-1){
$(inputEles[0]).focus();
}else{
$(inputEles[i+1]).focus();
}
}
}
} });
})

总结:

  jQuery判断两个元素是否相等用  ele1.is(ele2)

  button的默认类型是submit(会触发表单的提交)

  

=========jQuery.extend和jQuery.fn.extend=======

1.  我们先看jqueryAPI对两个函数的解释:

1.  jQuery.fn.extend(object)  返回值:jQuery

  扩展 jQuery 元素集来提供新的方法(通常用来制作插件)。

  参数object用来扩充 jQuery 对象。

例如:增加两个插件方法。

        jQuery.fn.extend({
check: function() {
return this.each(function() { this.checked = true; });
},
uncheck: function() {
return this.each(function() { this.checked = false; });
}
});

使用:

$("input[type=checkbox]").check();
$("input[type=radio]").uncheck();

2. jQuery.extend(object)  返回值:jQuery

  扩展jQuery对象本身。

  用来在jQuery命名空间上增加新函数。

  参数object用以扩展 jQuery 对象

例如:在jQuery命名空间上增加两个函数。

        // 扩展函数
jQuery.extend({
min: function(a, b) { return a < b ? a : b; },
max: function(a, b) { return a > b ? a : b; }
});

调用:

alert($.min(5, 6));

2. 自己的理解

jQuery的API手册中,extend方法挂载在jQuery和jQuery.fn两个不同对象上方法,但在jQuery内部代码实现的是相同的,只是功能却不太一样;
且看官方给出解释:
jQuery.extend(): Merge the contents of two or more objects together into the first object.(把两个或者更多的对象合并到第一个当中);
jQuery.fn.extend():Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods.(把对象挂载到jQuery的prototype属性,来扩展一个新的jQuery实例方法)

1.  jQuery.fn.extend()

  这个拓展的是jQuery.fn的方法。

jQuery.fn = jQuery.prototype = {
init:funtion(selector,context){
//..... }
}

  所以jQuery.fn.extend拓展的是jQuery对象(原型的)的方法啊!

  也就是只能在jQuery对象才能使用的方法,例如: $("#abc") ,$(div)。

  也就是说,jQuery.fn.extend拓展的方法,你得用在jQuery对象上面才行啊!说白了就是得这么用(假设xyz()是拓展的方法):

$('selector').xyz();

2. jQuery.extend() 

语法:

$.extend( target [, object1 ] [, objectN ] )

  jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。

注意:

1. 如果只为$.extend()指定了一个参数,则意味着参数target被省略。此时,target就是jQuery对象本身。通过这种方式,我们可以为全局对象jQuery添加新的函数。
2. 如果多个对象具有相同的属性,则后者会覆盖前者的属性值。

 

(1)用法一:指定一个参数扩展jQuery函数已经在上面测试过

        // 扩展jQuery类自身
jQuery.extend({
min: function(a, b) { return a < b ? a : b; },
max: function(a, b) { return a > b ? a : b; }
}); alert($.max(5, 6));

(2)合并多个对象的属性:

        var var1 = { name: 'var1', age: 2, sex: '男', address: 'var1 address', speak: function() { alert("var1 speak");} }
var var2 = { name: 'var2', age: 2, sex: '女', speak: function() { alert("var2 speak");} } // 将var2的属性合并到var1
jQuery.extend(var1, var2);
console.log(var1);
var1.speak();

结果:

补充:当然可以用一个变量接收合并后的结果:

        var var1 = { name: 'var1', age: 2, sex: '男', address: 'var1 address', speak: function() { alert("var1 speak");} }
var var2 = { name: 'var2', age: 2, sex: '女', speak: function() { alert("var2 speak");} } // 将var2的属性合并到var1
var var3 = jQuery.extend(var1, var2);
console.log(var1);
console.log(var3);
var1.speak();

结果:

补充:如果是用null或者undefined合并到target上,不会影响原target;可以将对象合并到null或undefined对象上,如下:

        var var1 = { name: 'var1', age: 2, sex: '男', address: 'var1 address', speak: function() { alert("var1 speak");} }

        var var3 = jQuery.extend(var1, undefined);
console.log(var1);
console.log(var3); var var4 = jQuery.extend(var1, undefined);
console.log("==============");
console.log(var1);
console.log(var4); var var2 = { name: 'var2', age: 2, sex: '女', speak: function() { alert("var2 speak");} }
var var5 = jQuery.extend(null, var2);
console.log("==============");
console.log(var5);

结果:

jQuery实现回车绑定Tab事件的更多相关文章

  1. JQuery实现回车代替Tab键(按回车跳到下一栏)

    一个提交按钮以后,用户如果按了键盘的回车键,默认情况下,就会提交这个表单了.这样对于用户输入各个表单项目,用户体验很不好,输入完一个项目,或者用鼠标选择下一个项目,或者用键盘的Tab键选中下一个项目. ...

  2. 关于jquery中on绑定click事件在苹果手机失效的问题

    用一个div当做了一个按钮来使用. <div class="button"> <div class=" next_button button_left ...

  3. jquery中on绑定click事件在苹果手机失效的问题

    因为是动态添加的内容,所以想要使用click事件,需要给他用on绑定一下: $(document).on("click",".next_button",func ...

  4. 关于jquery中on绑定click事件在苹果手机失效的问题(巨坑啊)

    用一个div当做了一个按钮来使用. <div class="button"> <div class=" next_button button_left ...

  5. jquery给label绑定click事件被触发两次解决方案

    首先我们看下面的代码片段(label包裹checkbox) <div class="example"><label for="chk_6" c ...

  6. jquery中on绑定click事件在苹果手机中不起作用

    写一个div当做了一个按钮来使用. <div class="button"> <div class="sure"> 确定 </di ...

  7. jquery通过live绑定toggle事件

    $("a[name=reply]").live("click",function(){ $(this).toggle( function () { var $c ...

  8. JQuery给元素绑定click事件多次执行的解决方法

    原绑定方法: $(".subNavdiv").click(function () { ###### }); 这种方法只会在原click方法中继续添加新方法: 解决办法更改绑定方法为 ...

  9. jquery中on绑定click事件在苹果手机失效问题解决(巨坑啊)

    描述:用一个div写一个按钮,并给这个按钮添加一个点击事件,在安卓机器上一切正常,但是在苹果机型上会出现点击事件失效. <!DOCTYPE html> <html lang=&quo ...

随机推荐

  1. MySQL存储过程实现动态执行SQL

    --存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数 create procedure p_procedurecode(in sumdate varchar(1 ...

  2. opencv: 排序

    opencv提供了排序函数:  sort和sorIdx , 其中sortIdx可以获取排序后的序号,比较方便: sortIdx原型: C++: void sortIdx(InputArray src, ...

  3. u-boot(二)makefile

    目录 u-boot(二)makefile 引入 目录结构(1.1.6) 配置文件 目标 配置具体的单板 编译阶段 过程 链接入口 配置链接地址 附录 附录A:mkconfig解析 附录B 链接脚本 t ...

  4. Linux下weblogic10.3.6(jar)版本安装详解

    一.安装前的准备 安装weblogic是需要JDK环境的,虽然weblogic有自带的JDK,但是我一般是自己选择JDK进行安装,如果你要自行安装,可以参考我的另一篇博客 https://www.cn ...

  5. SpringBoot实战一:发送邮件

    目录 邮件协议 引入邮件包 创建邮件类和测试类,写yml文件 文本邮件,HTML邮件,附件邮件,图片邮件 模板邮件 异常处理 来进行一个SpringBoot项目的实战,发送一下邮件,这里我们先了解一下 ...

  6. oracle中查看所有表和字段以及表注释字段注释

    获取表:select table_name from user_tables; //当前用户拥有的表 select table_name from all_tables; //所有用户的表 selec ...

  7. 高性能的代理服务-Envoy

    Envoy最初建于Lyft,是一个高性能的代理服务,为服务网格提供了基础. 它与应用程序并行运行,通过以平台无关的方式提供通用功能来抽象网络. 当基础架构中的所有服务流量都通过Envoy网格时,通过一 ...

  8. Spark源码剖析 - SparkContext的初始化(十)_Spark环境更新

    12. Spark环境更新 在SparkContext的初始化过程中,可能对其环境造成影响,所以需要更新环境,代码如下: SparkContext初始化过程中,如果设置了spark.jars属性,sp ...

  9. 我的长大app开发教程第二弹:完成ContentFragment底部按钮

    在开始之前,先上一张效果图 突然发现有点知乎的味道...的确..知乎灰#989898,知乎蓝15,136,235(逃.... 1.学P图 想我大一的时候也用过不少Adobe的软件,昨天重新打开我的Ph ...

  10. 为jqweui增加selectcallback方法

    jqweui select控件不支持select方法,可以自己添加代码,版本0.6.0. 1.增加selectcallback 2.change中增加如下代码 3.在select初始化时添加 sele ...