禁用特定文本框上的输入键

时间:2011-03-30 06:42:34

标签: jquery

我正在寻找一种方法来做到这一点,得到一些脚本,但没有一个适合我。

当我在文本框中输入时,它不应该做任何事情。

我尝试了一些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, " "));
    });
});

10 个答案:

答案 0 :(得分:48)

这适合我。

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

jsFiddle

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

答案 1 :(得分:12)

它阻止用户在文本框和文本框中按 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;
            }
        });
});

答案 2 :(得分:12)

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

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

答案 3 :(得分:6)

适合我:

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

http://jsfiddle.net/esEUm/

<强>更新

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

答案 4 :(得分:4)

我发现了这个组合解决方案 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);


});

答案 5 :(得分:3)

如果要禁用所有类型的搜索文本框。给他们所有的课,然后使用像'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();
});

喝彩! :)

答案 6 :(得分:1)

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

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

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

答案 7 :(得分:0)

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

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

(禁用文本框的输入并为文本区域输入启用)

答案 8 :(得分:0)

<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

答案 9 :(得分:0)

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();
}