Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript停止在文本框中写入_Javascript_Jquery_Javascript Events - Fatal编程技术网

如何使用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

我只想在文本框中输入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 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();
      }
   }
});