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

Posted

技术标签:

【中文标题】禁用特定文本框上的输入键【英文标题】: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, " "));
    );
);

【问题讨论】:

【参考方案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 基本方式。

【讨论】:

以上是关于禁用特定文本框上的输入键的主要内容,如果未能解决你的问题,请参考以下文章

设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。

在复选框和文本框上使用相同的功能切换可见性[重复]

将焦点设置在 xaml wpf 中的文本框上

如何在访问中禁用组合框上的自动完成功能?

在 JQuery 对话框文本框中输入单击不会触发 __doPostBack

如何在使用fancybox打开的新页面中将焦点设置在文本框上