2010-08-24 9 views
3

Je dois déclencher un événement de soumission de formulaire lorsque la valeur d'un formulaire change et que tous les champs du formulaire sont remplis. Tout dans ce travail en dehors de la ligne $('#date_filter_form').submit();. Je peux .hide() le formulaire mais je ne peux pas le soumettre() pour une raison quelconque. La documentation dit submit() est identique à trigger ('submit') donc je ne peux pas comprendre pourquoi ça ne marcherait pas.Impossible de soumettre un formulaire avec .submit()

$('#date_filter_form input[type="text"]').change(function() { 
    var from_val = $('#date_filter_form #from_date').val(); 
    var to_val = $('#date_filter_form #to_date').val(); 
    if(from_val != '' && to_val != '') { 
     $('#date_filter_form').submit(); 
    } 
}); 

HTML:

<form method="post" id="date_filter_form" name="date_filter_form" action=""> 
    <label class="left required" for="from_date">From</label> 
    <input type="text" id="from_date" class="datepicker hasDatepicker" value="" name="from_date"> 
    <label class="left required" for="to_date">to</label> 
    <input type="text" id="to_date" class="datepicker hasDatepicker" value="" name="to_date"> 

    <input type="hidden" value="" name="from_date_db"> 
    <input type="hidden" value="" name="to_date_db"> 

    <input type="submit" id="submit" class="button" value="Show results" name="submit"> 
</form> 
+0

je remarque que vous mettez le bouton d'envoi dans une condition if .. peut-être il ne présente pas coz la condition toujours pour résultat faux .. En fait, je – Manie

Répondre

22

Votre bouton submit est nommé 'submit' et il est en conflit avec la méthode form.submit.

Cela se produit parce que les navigateurs fournissent raccourci accesseurs pour former des éléments, les propriétés qui font référence aux éléments, sont liés à l'élément form, en utilisant l'attribut name comme le nom de la propriété.

Un élément nommé submit remplacera la méthode form.submit, vous devez simplement changer le nom.

Gardez également à l'esprit que dans IE vous aurez les mêmes problèmes avec l'attribut id.

Voir aussi:

L'erreur la plus commune faite lors de la définition du formulaire HTML, un script va interagir avec follows de l'existence des raccourcis accesseurs pour les contrôles de formulaire. Il s'agit de donner au contrôle un NOM (ou éventuellement un ID) correspondant à une propriété existante des éléments FORM. Et l'exemple le plus courant est un élément INPUT de type = "submit" avec le nom "submit". Étant donné que les contrôles nommés sont disponibles en tant que propriétés nommées de l'élément FORM, cet élément INPUT est mis à disposition sous le nom de propriété "submit". Malheureusement les éléments FORM ont déjà une propriété avec le nom "submit", c'est la méthode submit qui peut être utilisée pour soumettre le formulaire avec un script.

+0

Je ne comprends pas exactement pourquoi il se heurte mais cela a résolu le problème. – Keyo

+0

Il se bloque car les navigateurs fournissent des * accesseurs de raccourci * pour accéder directement aux éléments de formulaire par son nom, en tant que propriétés de l'élément de formulaire, par ex. 'document.forms.date_filter_form.from_date' et' submit' a une signification particulière, c'est la méthode utilisée pour déclencher une soumission de formulaire, si vous avez un contrôle nommé '' submit '' qui remplacera la méthode. – CMS

+0

J'utilise une bibliothèque de génération de formulaire pour générer mes formulaires et nomme un bouton de soumission en tant que submit. Comment retardé. Plus jamais je ne le laisserai nommer un bouton soumettre;) – Keyo

1

ans votre de est nommé

date_filter_form 

mais vous êtes à la recherche d'un formulaire nommé

date_filter 

Ainsi, votre validation ne va pas pass

+1

eu un div id = « date_filter » enveloppant la forme, de sorte Ce n'est pas le problème. J'ai mis à jour la question pour refléter votre suggestion cependant. – Keyo

Questions connexes