2012-09-08 2 views
1

J'ai écrit une fonction javascript pour valider que les données d'entrée utilisateur ne sont pas vides. La fonction appelée "isNotEmpty()" identifie que la zone de texte est vide. Mais cependant la fonction principale renvoie une déclaration vraie à la page JSP. Ainsi, le formulaire est soumis.validation javascript avec un tableau

L'alerte no 2 & 3 déclenche selon l'entrée du formulaire. mais la dose d'alerte n ° 1 ne se déclenche en aucun cas.

Veuillez vérifier cela et aidez-moi. Merci.

var firstName; 
var data = new Array(); 

function formEntryValidationTest() { 
    firstName = document.forms["regForm"]["firstName"]; 
    data[0] = isNotEmpty(firstName);//check the first name is empty 

    for(var i=0;i<data.length;i++) { 
     if(data[i]=="false") 
     { 
      alert("Check"); //alert No-1 
      return false; 
     } 
    } 
} 

// this is the function to check whether the input is not empty 
function isNotEmpty(obj) { 
    if(obj.value!="") { 
     alert("true"); //alert No-2 
     return "true"; 
    } 
    else 
    { 
     alert("false");//alert No-3 
     return "false"; 
    } 
} 
+1

Il fonctionne pour moi: http: // jsbin. com/ozalan/1/edit –

Répondre

4

vous retournez la chaîne "false" plutôt que la valeur booléenne false, qui JavaScript évalue à une valeur « truthy ».

Changer les déclarations de retour dans isNotEmpty à return true; et return false; et la condition formEntryValidationTest à if (!data[i]).

En outre, la condition que vous vérifiez dans isNotEmpty est trop stricte. Il retournera vrai pour undefined et null, ce qui peut être la raison pour laquelle votre code ne fonctionne pas. Changer quelque chose comme ceci:

function isNotEmpty(value){ 
    return value ? value.length > 0 : false; 
} 

ensuite passer la valeur d'entrée directement plutôt que de passer l'objet d'entrée lui-même:

data[0] = isNotEmpty(firstName.value); 
+0

Non généralement sous la forme onSubmit, j'appelle la fonction formEntryValidationTest(). – Sumer

+0

J'ai mis à jour ma réponse avec quelques suggestions supplémentaires. – Brandan

+0

Plaisir et attente. – Sumer

1

Vous utilisez des chaînes « vrais » et « faux » au lieu de booléennes valeurs vrai et faux. Retirez les guillemets comme dans:

return true 

instead of 

    return "true" 

Faites la même chose dans votre instruction if:

if(data[i]==false) 
instead of 
    if(data[i]=="false") 

(Notez qu'il n'y a pas de guillemets)

+0

J'ai fait mais le problème reste le même. – Sumer