【问题标题】:Stopping enter key submitting also stops enter key in multi line text edit停止输入键提交也会停止多行文本编辑中的输入键
【发布时间】:2011-10-08 17:40:15
【问题描述】:

网络上有很多解决方案可以阻止输入键提交表单。最常用<body onkeypress = ...

但这些似乎具有阻止回车键在多行文本框中工作的不良副作用。有谁知道解决这个问题的方法,所以回车键仍然可以在多行文本框中工作?

谢谢,

AJ

【问题讨论】:

    标签: javascript html events dom


    【解决方案1】:

    您可以尝试以下方法(使用 jquery):

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

    只针对输入字段,而不是文本区域。

    非查询

     function disableEnterKey(e)
         {
              var key;      
              if(window.event)
                   key = window.event.keyCode;
              else
                   key = e.which;     
    
              return (key != 13);
         }
    

    并在所有文本输入上添加 onKeyPress

    <input type="text" name="textIn" onKeyPress="return disableEnterKey(event)"/>
    

    参考:http://www.bloggingdeveloper.com/post/Disable-Form-Submit-on-Enter-Key-Press.aspx

    【讨论】:

    • 感谢您的回复,但我真的更喜欢非 jquery 解决方案。
    【解决方案2】:
    <script language="Javascript">
        document.onkeydown = function() {
            if (event.keyCode == 13) {
                if (document.activeElement.tagName.toLowerCase () != "textarea") {
                          event.preventDefault();
                          return false;
                    }
            }
        }
    </script>
    

    这样的?

    【讨论】:

    • 编辑我的答案不使用 JQuery。
    • 这看起来不错,但是 activeElement 和跨浏览器支持可能存在问题。
    • document.activeElement 被 IE6+、FF3+、Safari 4+、Opera 9+、Chrome 9+ 支持。
    • 顺便说一句,这是一个很好的 JSFiddle,向您展示了 activeElement 的用法:jsfiddle.net/w9gFj
    猜你喜欢
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    相关资源
    最近更新 更多