2010-01-20 13 views
14

J'ai un textarea, Sur chaque Entrez touche enfoncée dans textarea Je veux que la nouvelle ligne soit démarrée avec une balle say (*). Comment s'y prendre ?Entrez la clé dans textarea

Pas de jQuery s'il vous plaît.

Je peux observer pour le Entrez la clé, après cela!? Dois-je obtenir la valeur entière de textarea et ajouter * à elle et remplir à nouveau le textarea?

+0

Est-ce que l'une des réponses d'aide? –

+0

Suite à l'indice ci-dessous, je suis arrivé à la solution. – sat

Répondre

15

Vous pouvez faire quelque chose comme ceci:

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

Bien que le nouveau flux de caractères de la ligne de pression entrer sera toujours là, mais son un début à obtenir ce que vous voulez.

+0

@williamtroup: J'ai activé le formatage de code pour le code. –

+5

Cela ne fonctionnera que dans IE: 'window.event' n'est pas supporté par les autres navigateurs. –

+0

Doug Crockford m'a dit de vous dire d'utiliser === au lieu de ==. – MrBoJangles

7

Vous devez considérer le cas où l'utilisateur appuie sur entrer au milieu du texte, pas seulement à la fin. Je vous suggère de détecter la touche entrée dans l'événement keyup, comme l'a suggéré, et utiliser une expression régulière pour assurer la valeur que vous avez besoin:

<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

Mon scénario est lorsque l'utilisateur frappe sur la touche entrée en tapant textarea je dois inclure une ligne break.I réalisé cela en utilisant le code ci-dessous ...... espérant qu'il aide à quelqu'un ......

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 merci laissez-moi vérifier, regardez bien: D –

14

simplement ajouter peu à votre textarea.

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

Peut-être que vous pouvez développer cette réponse. Cela ne semble pas fonctionner. – swdev

1

Vous pouvez faire quelque chose comme ceci:

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