如何使用javascript停止在文本框中写入
我只想在文本框中输入3个单词。我的javascript代码如下:如何使用javascript停止在文本框中写入,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我只想在文本框中输入3个单词。我的javascript代码如下: jQuery('#Txt_Report').keyup(function (event) { if (event.which == 32) { count = jQuery('#Txt_Report').val().split(' ').length; if (count > 2) { ///////////// //How can I stop enteri
jQuery('#Txt_Report').keyup(function (event) {
if (event.which == 32) {
count = jQuery('#Txt_Report').val().split(' ').length;
if (count > 2) {
/////////////
//How can I stop entering text in txt_report anymore?
/////////////
});
}
}
如您所见,我想阻止用户输入超过3个单词。如果有人知道如何处理这个问题,请帮助。
谢谢。使用
event.preventDefault()使用键按下的code>(如注释所示)
演示:
将disabled属性设置为disabled
jQuery('#Txt_Report').keyup(function (event) {
if (event.which == 32) {
count = jQuery('#Txt_Report').val().split(' ').length;
if (count > 2) {
/////////////
//How can I stop entering text in txt_report anymore?
/////////////
jQuery('#Txt_Report').attr('disabled', 'disabled');
});
}
}
参考:为什么不使用“按键”并返回false
更新的代码示例:
使用keyup
无法预防默认值。使用或应该工作。以下是一个例子:
$('#Txt_Report').keypress(function(e) {
if (e.which == 32) {
var count = this.value.split(' ').length;
if (count > 2) {
e.preventDefault();
}
}
});
我认为keyup
事件已经太晚了。你需要键下键
。不要使用返回false
好主意,谢谢Kris Krause。但是在这里,用户可能想删除其中一个单词…Amir,明白了,但我看不出有理由不停止播放。@enginbilici也不是说您应该使用var
进行计数。另外,您不需要再次使用jQuery
来获取
。您可以只使用这个值+1作为唯一正确的答案keydown
太早,不会阻止所有按键。实际上,只有keypress
事件才能取消所有可能出现的按键事件。使用keyup
为时已晚,因为默认行为(即“填充文本框”)已经发生。@RobW我从来不知道keyup
可能太早。谢谢你的更新。但是,在jQuery的keydown文档中,他们在keydown上使用preventDefault()。这是一个错误吗?不是,因为keydown
可以有效地用于检测何时按下某个键。如果您正在开发一个捕获热键的函数,那么应该使用keydown事件,因为多次捕获按键(例如,[E]
)是没有意义的。这不是一个很好的答案。一旦他们的输入被禁用,就无法再次启用!!:)谢谢你的ansver saratis,我想强制用户只输入3个单词。如果他想多进一点,我不会让他进去的。但在这种情况下,他可能会删除一些单词,写一些不同的东西。我的意思是,我只想阻止用户,而不是禁用任何东西。对,这改变了一切@阿米尔,您当然可以启用它,只需删除attr。
$('#txt').keypress(function (event) {
return false;
});
$('#txt').keypress(function (event) {
var count = $(this).val().split(' ').length;
if (count > 2) {
return false;
};
});
$('#Txt_Report').keypress(function(e) {
if (e.which == 32) {
var count = this.value.split(' ').length;
if (count > 2) {
e.preventDefault();
}
}
});