2010-01-20 27 views
14

Tengo textarea, En cada Escriba tecla presionada en textarea Quiero que se inicie una nueva línea con una viñeta digamos (*). Cómo hacerlo ?Escriba la clave en textarea

No jQuery por favor.

Puedo observar para la clave Enter, después de eso!? ¿Debo tener que obtener el valor total de textarea y anexar * a él y llenar nuevamente el textarea?

+0

¿Alguna de las respuestas ayuda? –

+0

Siguiendo la sugerencia a continuación, llegué a la solución. – sat

Respuesta

15

se podría hacer algo como esto:

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

Aunque el nuevo carácter de línea de alimentación de presionar ENTER, todavía estará allí, pero es un comienzo para conseguir lo que desea.

+0

@williamtroup: Active el formato del código para el código. –

+5

Esto solo funcionará en IE: 'window.event' no es compatible con otros navegadores. –

+0

Doug Crockford me dijo que te diga que uses === en lugar de ==. – MrBoJangles

7

Debe considerar el caso en el que el usuario presiona enter en el medio del texto, no solo al final. Yo te sugeriría que la detección de la tecla enter en el caso keyup, como se sugiere, y el uso de una expresión regular para asegurar el valor está a su gusto:

<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

Mi escenario es cuando el usuario golpea la tecla Intro mientras se escribe en área de texto que tengo que incluir una línea break.I logra esto utilizando el código de abajo ...... Esperanza fuere ayuda a alguien ......

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, gracias, déjame ver, verte bien: D –

14

sólo tiene que añadir esta poco a su área de texto.

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

Tal vez puedas ampliar esta respuesta. No parece funcionar. – swdev

1

Se podría hacer algo como esto:

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