2010-01-20 146 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>