2012-02-24 3 views
0

Le script suivant permet d'entrer uniquement des lettres, des chiffres, des espaces, des del, des retours arrière. Dans ce code, je dois faire un changement qui si "entrée" à la première position est un "espace blanc" et il n'y a plus aphanumeric characters dans l'entrée utilisateur, il devrait renvoyer faux sinon true.Opération de chaîne complexe

JS

function usrInp(evt) { 
var char = (evt.which) ? evt.which : event.keyCode 
if (char > 64 && inp < 91 || char > 96 && char < 123 || char > 47 && char < 58 || char  == 127 || char == 8 || char == 32) { 
    return true; 
} 
else { 
    return false; 
} 
} 

formulaire HTML

<form name="one" id="one"> 
    <input type="text" name="abc" id="abc" onkeypress="return usrInp(event)" /> 
</form> 
+0

Avez-vous essayé d'utiliser une expression régulière? – Fermin

+0

@Fermin Comment l'implémenter ici ...? – sandbox

Répondre

0

Pourquoi ne pas regex?

return input.match(/^[\w\s]*$/g) != null 

Ceci renvoie true si l'entrée contient seulement A-Z, 0-9, espaces ou traits de soulignement.

+0

Mais j'ai besoin de vérifier si "entrée" à la première position est un "espace blanc" et il n'y a pas d'autres caractères aphanumériques dans l'entrée utilisateur, il devrait retourner faux et pour tous les autres cas, il devrait retourner vrai. Cela signifie que la chaîne peut avoir des 'White Spaces' plus loin ... – sandbox

+0

Modifier, l'a légèrement amélioré. – Jivings

+0

@sandbox Alors commence par un espace? Et pas d'autres lettres ou chiffres? – Jivings

0

L'utilisation de l'événement keypress ne capturera pas la touche de retour arrière, vous devrez utiliser le code pour cela. Si vous voulez atteindre la valeur ASCII d'une touche, appuyez sur:

function usrInp(evt) { 
    var char = (evt.which) ? evt.which : event.keyCode 
    return String.fromCharCode(char).match(/^[A-Z0-9 _]*$/); 
}