2011-08-18 4 views
2

Je n'ai pas trouvé une bonne solution: J'ai une zone de texte dans laquelle les utilisateurs doivent être en mesure de taper informations spécifiques dans. Par exemple, la commande peut être "9030 OUT FU [1234 TEST]". J'ai besoin de "gommer" cette zone de texte pour m'assurer que les données ont été tapées exactement dans ce format (les majuscules ne sont pas nécessaires). Cependant, il existe environ 50 de ces différents types de commandes.Javascript Zone de texte "Scrubber"

Je suis assez nouveau pour javascript, mais avec une bonne direction peut le comprendre. Est-ce possible avec javascript? Une fois que les données sont entrées dans la zone de texte, il va exécuter une fonction pour retourner certaines informations, et la boîte de texte sera claire pour la commande suivante. Les commandes n ° 2 peuvent être entrées en même temps. J'ai juste besoin de vérifier que le format est précis à 100% pour chaque commande. Toute aide est appréciée, merci.

Répondre

3
<script type="text/javascript"> 
function scrub(text) { 
    var commands = new Array{"someCommand","anotherCommand",...}; 
    for (var i = 0; i <= commands.length; i++) { 
     if (text.value.toLowerCase().equals(commands[i])) { 
      //command is valid; do something here 
     } else { 
      alert("Invalid command"); 
     } 
    } 
    text.value = ""; //clears the text box 
} 
</script> 

Pour textarea faire ceci:

<textarea onblur="scrub(this);" ...></textarea> 
+1

+1 Nicely done @ fireshadow52 –

+0

Gennaro @ Jason Merci. :) – fireshadow52

+0

Je suppose que je le ferais beaucoup plus difficile avec plus d'informations, ne sachant pas exactement ce que je devais demander en premier lieu. Il y a 5 sections principales à ma "commande". Ils sont les suivants: (désignation -> commande -> type -> emplacement -> misc). Le désignateur est une combinaison de caractères prédéfinie, ce qui signifie que j'ai une liste de toutes les combinaisons possibles, par exemple 9030, W17, JP18, etc. – user703402

0

Y at-il un ensemble de mots-clés? Et peut-on les combiner seulement d'une certaine manière?

On dirait deux des modèles regex sera en mesure de faire l'affaire.

par exemple: pour correspondre serait "FU 9030 OUT [1234 TEST]" regex: /\d{4} OUT FU \[\d{4}\]/.

OUT FU et peut être remplacé par respectivement \w{3} et \w{2} (à moins que vous ne voulez pas un mot à permis).

0

Utilisez des expressions régulières.

html:

<input type="text" id="code" /> 
<input type="button" value="test" onclick="alert(checkCode())" /> 

javascript:

function checkCode(){ 
var code = document.getElementById('code').value; 
return code.match(/\d+ \w+ \w+ \[\d+ \w+\]/)!=null ? true : false; 
} 

http://gskinner.com/RegExr/ est très utile avec des expressions régulières.

Quand vous dites « exactement ce format », vous devez comprendre que nous avons aucune idée de ce que vous voulez dire. Il y a un nombre infini de modèles qui pourraient être utilisés pour décrire votre exemple. L'expression régulière ci-dessus correspondra si le code a une chaîne de nombres, puis un mot, puis un autre mot, puis une parenthèse ouvrante, puis une chaîne de nombres, puis un mot, puis un crochet fermant.

Questions connexes