【问题标题】:disable enter key on specific textboxes禁用特定文本框上的输入键
【发布时间】:2011-07-25 20:46:55
【问题描述】:

我一直在寻找一种方法来做到这一点,得到了一些脚本,但没有一个对我有用。

当我在我的文本框中按 Enter 键时,它不应该做任何事情。

我尝试了一些 JavaScript 和 jQuery 脚本,但没有一个对我有用。

$(document).ready(function() {
    $('#comment').keypress(function(event) {
        if (event.keyCode == 13) {
            event.preventDefault();
        }
    });

    $('#comment').keyup(function() {
        var txt = $('#comment').val();
        $('#comment').val(txt.replace(/[\n\r]+/g, " "));
    });
});

【问题讨论】:

    标签: jquery


    【解决方案1】:

    这对我有用。

    $('textarea').keypress(function(event) {
        if (event.keyCode == 13) {
            event.preventDefault();
        }
    });
    

    jsFiddle.

    您的第二幅作品看起来是为了捕捉人们在多行中粘贴的内容。在这种情况下,您应该将其绑定到keyup paste

    【讨论】:

    • 它在小提琴中工作,但如果我把那个脚本放在我的本地,它就不起作用了。
    • @user 您的 JavaScript 可能有错误,请启用您的控制台并查找任何错误。
    • 你应该使用 $('textarea').on('keypress', function (){blah;});这样您就可以在需要时使用 .off() 以编程方式杀死它
    • @MetalPhoenix 我的代码转换为on() 方法。确定如何编写代码取决于其目的——在某些情况下,您不需要解除绑定,这意味着上面的代码就可以了。如果不是这种情况,您只需以不同的方式编写即可。
    • 我同意,但既然它们本质上是相同的,但具有能够解除绑定的前瞻性思维,那么您为什么这样做呢?有性能差异吗?
    【解决方案2】:

    如果您想阻止特定文本框的 Enter 键,请使用内联 js。

    <input type="text" onkeydown="return (event.keyCode!=13);"/>
    

    【讨论】:

      【解决方案3】:

      它阻止用户在文本框中按 Enter 在这里我返回 false 阻止表单提交。

      $(document).ready(function()
          {
              // Stop user to press enter in textbox
              $("input:text").keypress(function(event) {
                  if (event.keyCode == 13) {
                      event.preventDefault();
                      return false;
                  }
              });
      });
      

      【讨论】:

        【解决方案4】:

        为我工作:

        $('#comment').keypress(function(event) {
            if (event.which == 13) {
                event.preventDefault();
            }
        });
        

        http://jsfiddle.net/esEUm/

        更新

        如果您试图阻止提交父表单而不是换行符(这只有在您使用 textarea 时才有意义,而您显然没有这样做?)您可能想要检查这个问题:Disable the enter key on a jquery-powered form

        【讨论】:

        • 您使用的是哪个浏览器?您是否收到任何其他 JS 错误?选择器是否正确?您是否尝试过这里建议的return false;
        【解决方案5】:

        我在以下位置找到了这个组合解决方案 http://www.askmkhize.me/how-can-i-disable-the-enter-key-on-my-textarea.html

        $('textarea').keypress(function(event) {
        
        if ((event.keyCode || event.which) == 13) {
        
            event.preventDefault();
            return false;
        
          }
        
        });
        
        $('textarea').keyup(function() {
        
            var keyed = $(this).val().replace(/\n/g, '<br/>');
            $(this).html(keyed);
        
        
        });
        

        【讨论】:

          【解决方案6】:

          如果您想禁用所有类型的搜索文本框。给他们一个类,然后像下面的“search_box”一样使用这个类。

          //prevent submission of forms when pressing Enter key in a text input
          $(document).on('keypress', '.inner_search_box', function (e) {
              if (e.which == 13) e.preventDefault();
          });
          

          干杯! :)

          【讨论】:

            【解决方案7】:

            Alex 解决方案的变体,但使用纯 JavaScript 代码。可用于任何键。阻止默认值,停止表单提交。这对我有用。

            <input type="text" placeholder = "0.0"  onkeydown = "noareturnkey(event)">
            

            然后是简单的javascript代码:

            function noreturnkey(event) {
              var x = event.which || event.keyCode;
              if (x == '13')
               event.preventDefault();
            }
            

            【讨论】:

              【解决方案8】:

              使用全局选择器 $('input')...如果您在页面上使用多个文本框,则 ID ('#comment') 会导致问题。当使用动态内容时,使用 .live 绑定它,例如

              $('input:not(textarea)').live('keypress',function(e) {
                  if (e.which == 13) return false;
                  if (e.which == 13) e.preventDefault();
              });
              

              (对文本框禁用输入,对文本区域启用输入)

              【讨论】:

              • textarea ...基本上使用标签名称而不是类或ID选择器
              • 好的,尝试使用 alert 来调试它,例如警报(例如哪个); .检查警告的文本​​并更改您的 if 语句。 (页面上是否有任何 javascript 错误?;你能告诉我你正在使用的 textarea 部分的 html)
              • 好吧,想念那个……使用 $('input:not(textarea)') 。这将影响所有文本框和非文本区域。 (我会改变我的答案)
              • 但是最好保持对 textarea 的输入激活,以防您必须使用 textarea - jsfiddle.net/F3pyZ 如果您禁用表单将提交的脚本。 (你成功了吗?)
              【解决方案9】:
              <script type="text/javascript">
              
                 function stopRKey(evt) { 
                   var evt = (evt) ? evt : ((event) ? event : null); 
                   var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
                   if ((evt.keyCode == 13) && (node.type=="text"))  {return false;} 
                 } 
              
              
              document.onkeypress = stopRKey; 
              
              </script>
              

              http://webcheatsheet.com/javascript/disable_enter_key.php

              【讨论】:

                【解决方案10】:

                我不明白为什么这里的每个人都建议使用 jquery。 有一个非常简单的方法 对于特定的输入元素字段。您可以使用它的 onKeyDown 属性并在其中使用 e.preventDefault() 方法。像这样:

                <input type="text" onKeyDown={(e) => e.preventDefault()}/>
                

                注意:这是 React JSX 使用此属性的方式,您可以使用 HTML 基本方式。

                【讨论】:

                  猜你喜欢
                  • 2015-09-03
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-09-10
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-09-04
                  • 1970-01-01
                  相关资源
                  最近更新 更多