在textarea中触发输入

时间:2011-03-18 13:27:20

标签: html forms input triggers textarea

我注意到新的Facebook发送状态评论的方式。基本上,当您撰写评论时,您没有按钮可点击,但按“输入”键可以按下以提交评论。现在我也想做这件事。我正在考虑可能的解决方案。在我看来,<input>是在按下回车按钮的情况下提交的,但该文本区域不是。

  • 要么我写一个输入(类型文本)并设置一个高于一行的高度
  • 或者我必须添加一个textarea,并在用户按回车键时以某种方式提交该表单。

哪个最好?如果答案是第二,我怎么能这样做?

4 个答案:

答案 0 :(得分:8)

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

如果您想要一个不需要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/

答案 1 :(得分:0)

当焦点在你的textarea中时,我会在输入键上注册一个关键的监听器,这是最常见和最好的方式imo。

在jquery中,您可以使用keydown/up method

答案 2 :(得分:0)

不需要一个框架(例如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 :(得分:0)

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