2010-01-20 119 views
14

我有一個textarea,每輸入textarea中按下的鍵我想用子彈聲明(*)開始新行。如何去做呢?輸入密鑰在textarea

請勿使用jQuery。

我可以觀察爲輸入鍵,之後!?我是否必須得到textarea的全部值並將*附加到它並再次填入textarea

+0

沒有任何問題的答案的幫助嗎? – 2010-02-16 10:18:01

+0

按照下面的提示,我找到了解決方案。 – sat 2010-12-28 06:46:41

回答

15

你可以做這樣的事情:

<body> 

<textarea id="txtArea" onkeypress="onTestChange();"></textarea> 

<script> 
function onTestChange() { 
    var key = window.event.keyCode; 

    // If the user has pressed enter 
    if (key === 13) { 
     document.getElementById("txtArea").value = document.getElementById("txtArea").value + "\n*"; 
     return false; 
    } 
    else { 
     return true; 
    } 
} 
</script> 

</body> 

儘管從按下Enter鍵將仍然在那裏換行字符的飼料,但它一開始就得到你想要的。

+0

@williamtroup:我爲代碼打開了代碼格式。 – 2010-01-20 09:18:22

+5

這隻適用於IE:其他瀏覽器不支持'window.event'。 – 2010-01-20 09:35:55

+0

Doug Crockford告訴我要告訴你使用===而不是==。 – MrBoJangles 2014-07-31 17:28:33

7

您需要考慮用戶在文本中間按下輸入的情況,而不僅僅是在結尾。我建議檢測回車鍵在keyup事件的建議,並使用正則表達式,以確保值是根據您的需要:

<textarea id="t" rows="4" cols="80"></textarea> 
<script type="text/javascript"> 
    function formatTextArea(textArea) { 
     textArea.value = textArea.value.replace(/(^|\r\n|\n)([^*]|$)/g, "$1*$2"); 
    } 

    window.onload = function() { 
     var textArea = document.getElementById("t"); 
     textArea.onkeyup = function(evt) { 
      evt = evt || window.event; 

      if (evt.keyCode == 13) { 
       formatTextArea(this); 
      } 
     }; 
    }; 
</script> 
3

我的情況是,當用戶打字時敲擊回車鍵textarea的我必須包括線break.I實現這個使用下面的代碼......希望這可以幫助別人......

function CheckLength() 
{ 
    var keyCode = event.keyCode 
    if (keyCode == 13) 
    { 
     document.getElementById('ctl00_ContentPlaceHolder1_id_txt_Suggestions').value = document.getElementById('ctl00_ContentPlaceHolder1_id_txt_Suggestions').value + "\n<br>"; 
    } 
} 
+0

哇謝謝讓我檢查,看起來不錯:D – 2014-04-07 18:27:43

14

只需將此點點添加到您的textarea。

onkeydown="if(event.keyCode == 13) return false;" 
+0

也許你可以擴展這個答案。它似乎沒有工作。 – swdev 2018-01-20 21:34:27

1

你可以做這樣的事情:

$("#txtArea").on("keypress",function(e) { 
 
    var key = e.keyCode; 
 

 
    // If the user has pressed enter 
 
    if (key == 13) { 
 
     document.getElementById("txtArea").value =document.getElementById("txtArea").value + "\n"; 
 
     return false; 
 
    } 
 
    else { 
 
     return true; 
 
    } 
 
});
<textarea id="txtArea"></textarea>