【问题标题】:Triggering the enter in a textarea触发文本区域中的输入
【发布时间】:2011-07-18 04:19:35
【问题描述】:
我注意到发送 cmets 状态的新 Facebook 方式。基本上,当您撰写评论时,您没有可单击的按钮,而是按下“输入”键以提交评论。现在我也想做这个东西。我正在考虑可能的解决方案。我想到<input> 是在按下回车按钮的情况下提交的,但 textarea 不是。
- 要么我写一个输入(输入文本)并设置一个高度,女巫覆盖超过一行
- 或者我必须添加一个 textarea 并在用户按 Enter 时以某种方式提交该表单。
哪个是最好的?如果答案 = 秒,我该怎么做?
【问题讨论】:
标签:
html
forms
input
triggers
textarea
【解决方案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/