2009-09-30 2 views

Répondre

1

Cela devrait le faire:

document.getElementById('myForm').onsubmit = function() { 
    var elems = document.getElementsByClassName('req'); 
    for(var i = 0; i < elems.length; i++) { 
     if(elems[i].value.length == 0) { 
      return false; 
     } 
    } 
} 

Cela va attacher la fonction à l'événement de présenter votre formulaire. Si l'un de ces éléments est vide, la fonction retournera false immédiatement, empêchant l'envoi du formulaire.

Si vous ne voulez pas les valeurs des espaces uniquement à être comptés comme remplie, vous pouvez remplacer la condition if dans ce qui précède avec ceci:

if(elems[i].value.replace(/^\s+|\s+$/g,"").length == 0) { 
    ... 
+0

Cela échouera si une autre entrée cachée ou non nécessaire a une valeur vide. –

+1

@mikesamuel - Je ne vois pas comment. Un vote négatif était-il vraiment nécessaire? – karim79

+0

Je suis d'accord, karim, cela devrait fonctionner comme vous avez seulement les champs 'req', non? – Zlatko

0

Ajout d'un gestionnaire d'événements « onsubmit » à la forme sera laissez-vous agir lorsque vous en avez besoin.

<form onsubmit="checkMyForm(this)"> 
    ... 
    </form> 

Ensuite, vous pouvez définir un gestionnaire

<script> 
    function checkMyForm(myForm) { 
    for (var i = 0; i < myForm.elements.length; ++i) { 
     var input = myForm.elements[i]; 
     if (/\breq\b/.test(input.className) && !input.value) { 
     // Has an empty required input 
     alert('Please enter all required inputs'); 
     input.focus(); 
     return false; // abort form submission 
     } 
    } 
    } 
    </script> 
+0

onsubmit = "checkMyForm (this)" = intrusif javascript = beurk. – karim79

+0

ça a l'air génial mais je ne comprends pas que si (/ \ breq \ b/.test (... ligne, peux-tu me dire ce qui se passe là-bas? – BigOmega

Questions connexes