2010-01-20 11 views
14

Ich habe einen textarea, Auf jeder Geben Sie Taste in textarea Ich möchte neue Linie mit einem Punkt gestartet werden sagen (*). Wie geht es?Enter-Taste in TextArea-

Keine jQuery bitte.

Ich kann für die eingeben Geben Sie Schlüssel, danach!? Sollte ich den ganzen Wert von textarea bekommen und an * anhängen und die textarea wieder füllen?

+0

Hat eine der Antworten helfen? –

+0

Dem folgenden Hinweis folgend, kam ich zur Lösung. – sat

Antwort

15

Sie könnten etwas tun, wie folgt aus:

<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> 

Obwohl die neue Linienzeichen-Feed von enter wird noch da sein, aber es ist ein Anfang zu bekommen, was Sie wollen.

+0

@williamtroup: Ich habe die Code-Formatierung für den Code aktiviert. –

+5

Dies funktioniert nur im IE: 'window.event' wird in anderen Browsern nicht unterstützt. –

+0

Doug Crockford sagte mir, ich solle dir sagen, === statt ==. – MrBoJangles

7

Sie müssen den Fall berücksichtigen, in dem der Benutzer die Eingabetaste in der Mitte des Textes drückt, nicht nur am Ende. Ich würde vorschlagen, die Enter-Taste in der keyup Ereignis erkennt, wie vorgeschlagen, und verwenden Sie einen regulären Ausdruck der Wert, um sicherzustellen, ist, wie Sie benötigen:

<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

Mein Szenario ist, wenn der Benutzer die Enter-Taste schlägt während der Eingabe in TextArea- ich habe eine Linie schließen break.I erreicht diese den Code unten mit ...... Hoffe, es kann jemand hilft ......

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

Wow, danke, lassen Sie mich überprüfen, sehen Sie gut aus: D –

14

einfach dieses bisschen zu Ihrem Textfeld hinzuzufügen.

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

Vielleicht können Sie auf diese Antwort erweitern. Es scheint nicht zu funktionieren. – swdev

1

Man könnte so etwas tun:

$("#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>