zoukankan      html  css  js  c++  java
  • jQuery的如何捕捉回车键,改变事件标签

    我希望有一个jQuery的解决方案,我必须接近,有什么需要做的?

    $('html').bind('keypress', function(e)
    {
      if(e.keyCode == 13)
      {
       return e.keyCode = 9; //set event key to tab
      }
    });
    

    我可以返回false,它可以防止回车键被按下时,我以为我可以在键代码只是改变到9,使其标签,但它似乎并没有工作。我得要接近,这是怎么回事?
    本文地址 :CodeGo.net/130140/ 

    ------------------------------------------------------------------------------------------------------------------------- 
    1. 这里是一个解决方案:

    $('input').live("keypress", function(e) {
       /* ENTER PRESSED*/
       if (e.keyCode == 13) {
        /* FOCUS ELEMENT */
        var inputs = $(this).parents("form").eq(0).find(":input");
        var idx = inputs.index(this);
        if (idx == inputs.length - 1) {
         inputs[0].select()
        } else {
         inputs[idx + 1].focus(); // handles submit buttons
         inputs[idx + 1].select();
        }
        return false;
       }
      });
    


    2. 此作品完美!

     $('input').keydown( function(e) {
      var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
      if(key == 13) {
       e.preventDefault();
       var inputs = $(this).closest('form').find(':input:visible');
       inputs.eq( inputs.index(this)+ 1 ).focus();
      }
     });
    


    3. 一个jQuery插件的数字键盘键作为tab键等效。 也可配置的输入键,在这个演示。看到我对这个问题较旧的答案。 在你的情况,在更换输入键和标签函数,整个页面(设置进入键,在选项标签后)。

    <body data-plus-as-tab="true">
     ...
    </body>
    


    4. 从Ben的插件这个版本建立处理选择,你可以传递一个选项来allowSubmit。 IE浏览器。 $(“#表”)enterAsTab({'allowSubmit“:真});这将允许进入到提交表单当提交按钮被处理事件。

      (function( $ ){
       $.fn.enterAsTab = function( options ) { 
       var settings = $.extend( {
        'allowSubmit'   : false
       }, options);
       this.find('input, select').live("keypress", {localSettings: settings}, function(event) {
       if (settings.allowSubmit) {
        var type = $(this).attr("type");
        if (type == "submit") {
         return true;
        } 
       }
       if (event.keyCode == 13 ) {
        var inputs = $(this).parents("form").eq(0).find(":input:visible:not(disabled):not([readonly])");
        var idx = inputs.index(this);
        if (idx == inputs.length - 1) {
         idx = -1;
        } else {
         inputs[idx + 1].focus(); // handles submit buttons
        }
        try {
         inputs[idx + 1].select();
        }
        catch(err) {
         // handle objects not offering select
        }
        return false;
       }
       });
       return this;
       };
      })( jQuery );
    


    5. 这是我的解决方案,反馈:)

    $('input').keydown( function (event) { //event==Keyevent
     if(event.which == 13) {
      var inputs = $(this).closest('form').find(':input:visible');
      inputs.eq( inputs.index(this)+ 1 ).focus();
      event.preventDefault(); //Disable standard Enterkey action
     }
     // event.preventDefault(); <- Disable all keys action
    });
    


    6. 这些解决方案并没有与我的DataGrid工作。我希望他们会。我并不真的需要Tab或Enter键移动到下一个输入 CodeGo.net,列,行或什么的。我只需要输入触发。或者,改变和我的DataGrid更新数据库。所以我加了“输入”类相关的文本输入,这做的伎俩

    $(function() {
     if ($.browser.mozilla) {
      $(".enter").keypress(checkForEnter);
     } else {
      $(".enter").keydown(checkForEnter);
     }
    });
    function checkForEnter(event) {
     if (event.keyCode == 13) {
      $(".enter").blur();
     }
    }
    


    7. 我写的代码从接受的答案是一个jQuery插件,我觉得这(还,现在忽略了隐藏,禁用,只读表单

    $.fn.enterAsTab = function () {
     $(this).find('input').live("keypress", function(e) {
     /* ENTER PRESSED*/
     if (e.keyCode == 13) {
      /* FOCUS ELEMENT */
      var inputs = $(this).parents("form").eq(0).find(":input:visible:not(disabled):not([readonly])"),
       idx = inputs.index(this);
      if (idx == inputs.length - 1) {
       inputs[0].select()
      } else {
       inputs[idx + 1].focus(); // handles submit buttons
       inputs[idx + 1].select();
      }
      return false;
     }
     });
     return this;
    };
    

    这样我可以做$('#表单ID')enterAsTab(); ...想我会发布以来,没有人把它贴为$插件,但它们并非完全直观的来写。 
    8. 我把最上面的,并添加任何输入工作,表单以外,等也正常循环回到现在开始,如果你到达最后输入的能力。和..在只有1个输入的情况下它blur了那么单一输入触发任何外部blur/处理程序。

    $('input,select').keydown( function(e) {
     var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
     if(key == 13) {
     e.preventDefault();
     var inputs = $('#content').find(':input:visible');
       var nextinput = 0;
      if (inputs.index(this) < (inputs.length-1)) nextinput = inputs.index(this)+1;
       if (inputs.length==1) $(this).blur().focus();
     else inputs.eq(nextinput).focus();
      }
    });
    


    9. 这里就是我

       $("[tabindex]").addClass("TabOnEnter");
       $(document).on("keypress", ".TabOnEnter", function (e) {
        //Only do something when the user presses enter
        if (e.keyCode == 13) {
         var nextElement = $('[tabindex="' + (this.tabIndex + 1) + '"]');
         console.log(this, nextElement);
         if (nextElement.length)
          nextElement.focus()
         else
          $('[tabindex="1"]').focus();
        }
       });
    

    注重将TabIndex,而不是具体的表单,但整个页面。 注live已经过时了jQuery的,现在你应该知道on 
    10.

    $('input').live("keypress", function(e) {
       /* ENTER PRESSED*/
       if (e.keyCode == 13) {
        /* FOCUS ELEMENT */
        var inputs = $(this).parents("form").eq(0).find(":input:visible");
        var idx = inputs.index(this);
        if (idx == inputs.length - 1) {
         inputs[0].select()
        } else {
         inputs[idx + 1].focus(); // handles submit buttons
         inputs[idx + 1].select();
        }
        return false;
       }
      });
    

    可见的输入是水湿 
    11. 为什么不能简单的这样吗?

    $(document).on('keypress', 'input', function(e) {
     if(e.keyCode == 13 && e.target.type !== 'submit') {
     e.preventDefault();
     return $(e.target).blur().focus();
     }
    });
    

    这样一来,你就不会触发提交,除非你是在“提交”已输入的类型,它把你的权利你离开的地方。这也使得它的动态添加到页面中输入工作。 注:blur()是在前面的人谁可能有什么“的blur”事件侦听器。这是没有必要的过程工作。 
    12. 我知道这个问题是年纪比神,但我从来没有见过,这是所有优雅的答案。

    doc.on('keydown', 'input', function(e, ui) {
     if(e.keyCode === 13){
      e.preventDefault();
      $(this).nextAll('input:visible').eq(0).focus();
     }
    });
    

    这似乎在为几行以不可思议的把工作完成。 
    13. 这是最后什么工作完美。我jqeasyui,它工作正常

    $(document).on('keyup', 'input', function(e) {
     if(e.keyCode == 13 && e.target.type  !== 'submit') {
     var inputs = $(e.target).parents("form").eq(0).find(":input:visible"),
     idx = inputs.index(e.target);
      if (idx == inputs.length - 1) {
       inputs[0].select()
      } else {
       inputs[idx + 1].focus();
       inputs[idx + 1].select();
      }
     }
    });
  • 相关阅读:
    计算2*3+(2*(5+6)*3)/2+4*6的值
    单链表 删除倒数第m个元素的实现
    string.data()和string.c_str()
    c++ 打印时间
    二分查找
    两个整数相除的计算
    查看一个数字是不是回环数(对称)
    编译#include <stdio.h> 等用尖括号指定的文件提示找不到 VS googleTest 安装的makeInstall
    八皇后---递归
    分治算法--求m的n次方
  • 原文地址:https://www.cnblogs.com/lenther2002/p/4731546.html
Copyright © 2011-2022 走看看