2011-03-18 92 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/