触发文本区域中的输入

Posted

技术标签:

【中文标题】触发文本区域中的输入【英文标题】:Triggering the enter in a textarea 【发布时间】:2011-07-18 04:19:35 【问题描述】:

我注意到发送 cmets 状态的新 Facebook 方式。基本上,当您撰写评论时,您没有可单击的按钮,而是按下“输入”键以提交评论。现在我也想做这个东西。我正在考虑可能的解决方案。我想到<input> 是在按下回车按钮的情况下提交的,但 textarea 不是。

要么我写一个输入(输入文本)并设置一个高度,女巫覆盖超过一行 或者我必须添加一个 textarea 并在用户按 Enter 时以某种方式提交该表单。

哪个是最好的?如果答案 = 秒,我该怎么做?

【问题讨论】:

【参考方案1】:

这取决于你如何定义最佳。

如果您想要一个不需要 javascript 的非常简单的解决方案,第一个是最好的

如果您希望在文本中允许换行符,最好使用秒数。

如果你想使用文本区域解决方案,你可以这样做:(使用 jQuery)

<textarea id="mytextarea"></textarea>
<script>
$('#mytextarea').keypress(function(e)
  if(e.keyCode == 13 && !e.shiftKey) 
   e.preventDefault();
   this.form.submit();
  
);
</script>

这个解决方案的好处是它仍然允许人们进行换行,只要他们在按下回车键时按住 shift 键。就像在 Skype 上一样。

此处的示例:http://jsfiddle.net/MEtGg/

【讨论】:

【参考方案2】:

不需要框架(比如jQuery)就为了这个:

var textarea = document.getElementById("area");

try 
    textarea.addEventListener("keydown", keyPress, false);
 catch (e) 
    textarea.attachEvent("onkeydown", keyPress);


function keyPress(e) 
    if (e.keyCode === 13) 
        alert("Enter key was pressed")
     else 
        return;
    

看一个例子:http://fiddle.jshell.net/yuCAd/3/

【讨论】:

【参考方案3】:

当焦点在您的文本区域时,我会在 enter 键上注册一个键侦听器,这是 imo 最常见和最好的方式。

在 jquery 中你可以使用keydown/up method

【讨论】:

【参考方案4】:

我会选择第二个。并会使用 javascript 拦截回车键,然后调用函数进行提交。 这个答案应该是这样的:Trigger a button click with JavaScript on the Enter key in a text box

【讨论】:

以上是关于触发文本区域中的输入的主要内容,如果未能解决你的问题,请参考以下文章

如何更改文本区域中一行用户输入的背景颜色?

如何防止文本区域中的重复空格

在没有插入操作的情况下在 html 文本区域中输入引号和双引号在数据库中失败。可能吗?

如何使在文本区域中输入的文本对应于特定的单选按钮?

如何使用 AngularJs 从输入或文本区域中删除特殊字符?

获取文本区域中的光标位置