2010-10-28 8 views
1

Eh bien, j'ai un problème lors de la validation d'un formulaire avec jQuery. Je n'utilise aucun cadre de validation (tel que http://docs.jquery.com/Plugins/Validation), parce que je dois le faire sans n'importe quelle solution pré-construite (c'est une exigence d'utilisateur, étrange, d'ailleurs). J'ai une zone de texte, et j'ai besoin de valider toute chaîne, mais, cette chaîne n'a pas de chiffres ou de caractères spéciaux (comme! "$ $ & /()=;,:.-_), C'est un nom de personne. est mon code.Validation de formulaire avec jQuery

<script type="text/javascript"> 
    $(document).ready(function(){ 
     var onlyChars = /^[A-Za-z]+$/; 
     var onlyNums = /^[0-9]+$/; 
     var mail = /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/; 
     var name = $("#txtname"); 
     function validateName() 
     { 
     if (name.val().length > 25) 
     { 
      alert("Too Longer"); 
      return false; 
     } 
     else if (name.val().match(/^[A-Za-z]+$/)) 
     { 
      alert("Error, Pattern Doesn't Match"); 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
     } 
     $("#submitform").submit(function(){ 
     if (validateName()) 
     { 
     return true; 
     } 
     else 
     { 
      return false; 
     } 
     }); 
    }); 
    </script> 

la première validation il est Ok (Si j'écrire plus de 25 caractères, l'alerte est déclenchée et soumettre un événement est avorté), mais, la deuxième validation ne fait pas dans ce cas se produit deux événements:.

  1. sur le terrain, ayant non-admis caractères « Pass » la validation et le formulaire est soumis

  2. Le champ, ayant seulement les caractères autorisés Ne pas passer la validation et le formulaire n'est pas soumis.

J'ai tout vérifié, et les "deux problèmes" sont complètement aléatoires.

Pouvez-vous me donner de l'aide?

Merci beaucoup!

PS: Désolé pour les Anglais, je ne suis pas un « locuteur natif »

+1

Il est permis d'admettre que c'est un devoir. –

+0

euh, s'il vous plaît christ ne mélangez pas les langues dans votre code? : bevacqua

+0

@mootinator Désolé mais non, ce n'est pas des devoirs ...:/ –

Répondre

0

D'accord, je vais mordre.

Regardez bien ce code:

else if (name.val().match(/^[A-Za-z]+$/)) 
    { 
     alert("Error, Pattern Doesn't Match"); 
     return false; 
    } 

qui lit: Si le nom correspond au modèle dit l'utilisateur, il ne fonctionne pas et ne se soumet pas. Vous voulez que inverse:

else if (!name.val().match(/^[A-Za-z]+$/)) 
    { 
     alert("Error, Pattern Doesn't Match"); 
     return false; 
    } 
+0

Ouais, j'ai raté le "!", Mais, "c'est pareil", en termes de résultat.Je ne sais pas pourquoi, mais, me donne le même résultat, parfois la forme qu'il est soumis avec les caractères spéciaux, et arrête parfois l'exécution, mais, dans ce cas, le programme bloque les "bonnes expressions". E.g: J'écris "Foo Bar" dans la zone de texte, et le script déclenche l'alerte en disant "Erreur, motif ne correspond pas". –

+0

var name = $ ("# txtname"); devrait être dans la fonction validateName. –

+0

Ok, ça a marché! Merci beaucoup! –

1

Votre code est dire ==>
Si le nom correspond correctement, dire"modèle ne correspond pas à" Jetez un oeil à votre code ici:

else if (name.val().match(/^[A-Za-z]+$/)) 
//change this to else if (!(name.val().match(/^[A-Za-z]+$/))) 
    { 
    alert("Error, Pattern Doesn't Match"); 
    return false; 
    } 
    else 
    { 
    return true; 
    } 
0

vous devez utiliser Firebug et définir un point de pause pour marcher le code, il vous donnera sans doute un indice pourquoi vous allez dans le mauvais bloc de code.

Questions connexes