【问题标题】:preventDefault() disables text input as wellpreventDefault() 也禁用文本输入
【发布时间】:2018-06-24 21:30:14
【问题描述】:

编辑:我想在我已经输入一些文本后使用回车键清除文本框。给我造成的困扰很抱歉

edit 2 缺少的事件参数是这一切的关键。对不起,我是一个失败的程序员。

我想在按下回车键时禁用换行符/换行符。但是,版本 1 不起作用,因为我根本无法输入任何文本。

版本 2 有效,我仍然可以在继续输入新文本的同时清除该字段。

从我的解释来看,无论我是否同时按下 shift 键 + enter,它仍然应该允许我输入。为什么会有这样的差异? shift 键的默认选项与启用/禁用文本框上的输入有何关系?我想做的是在按下回车按钮时禁用换行符/换行符,但我发现它也禁用了输入部分,据我了解,它不应该?

// html
<textarea type="text" id="box">Some text</textarea>

// javascript
document.getElementById('box').addEventListener('keypress', (e)=>{
   //version 1
   if(e.keyCode == 13){ //why does this version also disable any text input?
      e.preventDefault();
      document.getElementById('box').value = '';
   }

   //version 2
   if(e.keyCode == 13 && e.shiftKey){
      e.preventDefault();
      document.getElementById('box').value = '';
   }
});

【问题讨论】:

  • 等等。为什么按“Enter”或“Shift Enter”后要清除内容?这是故意的吗?
  • @PraveenKumarPurushothaman 是的,我想重新制定一个像 Whatsapp 这样的信使应用程序。
  • 啊好吧...:)

标签: javascript html preventdefault


【解决方案1】:

您的代码抛出错误,因为它不知道变量e 指的是什么。如果您查看错误控制台,您应该会看到该错误。要修复它,您应该将其传递给函数。当您按 Enter 键时,这会清除教科书。那是你要的吗?我留下了这条线,但把它注释掉了。

document.getElementById('box').addEventListener('keypress', (e)=>{
   //version 1
   if(e.keyCode == 13){ //why does this version also disable any text input?
      e.preventDefault();
      document.getElementById('box').value = '';
   }

});
&lt;textarea type="text" id="box"&gt;Some text&lt;/textarea&gt;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
相关资源
最近更新 更多