2010-01-20 11 views
14

Ho un textarea, Su ogni Immettere il tasto premuto in textarea Voglio una nuova riga da avviare con un punto elenco (*). Come fare?Immettere la chiave nella textarea

No jQuery per favore.

posso osservare per la chiaveInvio, dopo che!? Dovrei ottenere l'intero valore di textarea e aggiungerlo * e riempire nuovamente lo textarea?

+0

Qualcuno delle risposte di aiuto? –

+0

Seguendo il suggerimento di seguito, sono arrivato alla soluzione. – sat

risposta

15

Si potrebbe fare qualcosa di simile:

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

Anche se il nuovo feed personaggio linea dal enter sarà ancora lì, ma è un inizio per ottenere quello che vuoi.

+0

@williamtroup: ho attivato la formattazione del codice per il codice. –

+5

Funzionerà solo in IE: 'window.event' non è supportato in altri browser. –

+0

Doug Crockford mi ha detto di dirti di usare === invece di ==. – MrBoJangles

7

È necessario considerare il caso in cui l'utente preme immettere nel mezzo del testo, non solo alla fine. Io suggerirei di rilevare il tasto Invio nel caso keyup, come suggerito, e utilizzare un'espressione regolare per assicurare il valore è come desiderato:

<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

mio scenario è quando l'utente colpisce il tasto Invio durante la digitazione in textarea devo includere una linea break.I raggiunto questo usando il codice seguente ...... spero che può aiuta qualcuno ......

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 grazie, fammi controllare, guarda bene: D –

14

Basta aggiungere questo tad al vostro textarea.

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

Forse potresti ampliare questa risposta. Non sembra funzionare. – swdev

1

Si potrebbe fare qualcosa di simile:

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

Problemi correlati