2010-03-07 6 views
0

Ok, j'ai un script de validation qui vérifie tout sur le formulaire - mais il marque les champs du numéro de téléphone comme faux, indépendamment de ce qui est là. J'ai essayé de différentes manières et je n'arrive pas à comprendre ce que je fais de mal.Problème avec la validation de formulaire (numéros de téléphone)

La partie du script qui valide est ...

if (testPattern(phone1, /^\d{3}$/)== false) { // checking phone length 
     valid = false; 
    } 
    if (testPattern(phone2, /^\d{3}$/)== false) { 
     valid = false; 
    } 
    if (testPattern(phone3, /^\d{4}$/)== false) { 
     valid = false; 
    } 

Le code de fonction est ...

function testPattern(field, reg2) { 
    var trueOrfalse = reg2.test(field) 
    if (trueOrfalse == false) { 
     field.style.backgroundColor="yellow"; // if false, change colors and return false 
     field.style.color="red"; 
     return false; 
    } 
    else { 
     field.style.backgroundColor="white"; // if true, change colors and return true 
     field.style.color="black"; 
     return true; 
    } 
} 

Répondre

3

Peut-être

var trueOrfalse = reg2.test(field) 

devrait être

var trueOrfalse = reg2.test(field.value) 

Ajoutée:

De plus, rappelez-vous que vous n'avez pas besoin de comparer true ou false lors de l'évaluation dans un contexte booléen. (Utilisez la valeur elle-même ou la négation). Et il est préférable de variables nom après leur signification, et non « trueorfalse » est ici ma re-écriture:

if (!testPattern(phone1, /^\d{3}$/)) { // checking phone length 
    valid = false; 
} 
if (!testPattern(phone2, /^\d{3}$/)) { 
    valid = false; 
} 
if (!testPattern(phone3, /^\d{4}$/)) { 
    valid = false; 
} 



function testPattern(field, reg2) { 
    var good = reg2.test(field.value); 
    if (good) { 
     field.style.backgroundColor="white"; // if good, change colors 
     field.style.color="black"; 
    } 
    else { 
     field.style.backgroundColor="yellow"; // if bad, change colors 
     field.style.color="red"; 
    } 
    return(good); 
} 
+0

+1 pour spécifier que vous devez nommer les variables après leur signification. – Cam

0

Pas une réponse réelle à votre question, car il n'y a rien de mal avec les extraits vous avez posté, mais était trop grand pour un commentaire.

Votre code est vraiment redondant!

Vous pouvez exprimer toute la première partie comme:

valid = testPattern(phone1, /^\d{3}$/) && 
     testPattern(phone2, /^\d{3}$/) && 
     testPattern(phone3, /^\d{4}$/) 

Et le code de fonction:

function testPattern(field, reg2) { 
    var test_result = reg2.test(field) 

    if (test_result) { 
     field.style.backgroundColor = "white"; 
     field.style.color = "black"; 
    } else { 
     field.style.backgroundColor = "yellow"; 
     field.style.color = "red"; 
    } 

    return test_result; 
} 

Ou encore plus concise:

function testPattern(field, reg2) { 
    var test_result = reg2.test(field) 

    field.style.backgroundColor = test_result ? "white" : "yellow"; 
    field.style.color = test_result ? "black" : "red"; 

    return test_result; 
} 

est-ce pas beaucoup plus facile à lire?

Questions connexes