2011-09-04 7 views
1

Je veux aussi vérifier une série de fautes de frappe courantes et les corriger en direct, pendant que l'utilisateur saisit une zone de texte html.Correction de doubles virgules, de points et d'autres fautes de frappe courantes

Il est une liste commune des fautes de frappe, comme deux périodes, l'espace avant la ponctuation, pas d'espace après la ponctuation, et ainsi de suite ..

Je sais qu'il est un problème commun mais je ne suis pas en mesure de trouver un plugin jquery approprié ou quelque chose dans ce sens.

Sinon, si le n'est pas un tel plugin ... Je pourrais utiliser un peu d'aide avec les regex à utiliser.

+1

lol @ la double période. idk à propos de tout plugin de ce type, mais l'expression rationnelle ne serait pas difficile. Vous devez le lier avec l'événement keyup. –

+1

Je suppose que vous ne vous attendez pas à ce que quelqu'un tape quelque chose comme "$ 12,000.00" ou "" ... une phrase ... "? – Gabe

+0

Pas du tout, chaque entrée sera une sorte d'annonce d'un journal local, comme des ventes aux enchères comme ça. – tutuca

Répondre

1

est ici un code jQuery qui élimine deux virgules et doubles périodes comme dactylographié:

HTML:

<textarea class="autoCorrect" rows="5" cols="40">Some initial text</textarea> 

Javascript:

$(".autoCorrect").keypress(function() { 
    var obj = this; 
    setTimeout(function() { 
     var text = obj.value; 
     var selStart = obj.selectionStart; 
     var newText = text.replace(/,{2,}|\.{2,}/, function(match, index) { 
      if (index < selStart) { 
       selStart -= (match.length - 1); // correct the selection location 
      } 
      return(match.substr(0,1)); 
     }); 
     if (newText != text) { 
      obj.value = newText; 
      obj.selectionStart = obj.selectionEnd = selStart; 
     } 
    }, 1); 
}) 

Vous pouvez le voir en action ici: http://jsfiddle.net/jfriend00/XbZrS/.

Il devrait être évident que vous l'étendez à d'autres caractères doubles en les ajoutant simplement à l'expression régulière. Si vous souhaitez capturer d'autres événements susceptibles de modifier le texte, tels que couper, coller et glisser/déposer, vous devrez également associer cette logique à ces autres événements.

+0

Bon point de départ, merci !. – tutuca

+1

Notez que setTimeout est là pour que vous puissiez voir le texte dans le champ après le traitement de la clé. Cela pourrait également être fait sans setTimeout pour regarder le point d'insertion et voir où irait la frappe actuelle et décider si cela provoquerait un double, puis bloquer cette clé, mais c'est un peu plus de travail. – jfriend00

+0

A travaillé sur [ce plugin] (https://gist.github.com/1194193) basé sur votre conseil. Je marque votre réponse comme acceptée. – tutuca

Questions connexes