2011-03-18 195 views
3

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

  • 无论是我写的输入(类型文本),并设置一个高度女巫占地面积超过一排
  • 更多或我要补充一个textarea并以某种方式提交该表格,当用户按回车键。

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

回答

7

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

第一,如果你想要一个非常简单的解决方案,不需要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/

+0

如果我可能会问这是否适合所有浏览器 – Uchenna 2011-07-31 21:24:51

0

我上的回车键注册一个按键侦听器,当焦点在你的textarea的,这是国际海事组织最常见的和最好的方式。

在jQuery中可以使用keydown/up method

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/