禁用特定文本框上的输入键
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 基本方式。
【讨论】:
以上是关于禁用特定文本框上的输入键的主要内容,如果未能解决你的问题,请参考以下文章
设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。