2011-05-10 4 views
2

je me sens vraiment stupide d'avoir à demander à ce bureau tête mais j'ai aucune idée pourquoi ce code ne fonctionne pas, il très simple soupirEnvoyer un formulaire avec Javascript

Je reçois ce qui suit Erreur JavaScript lorsque je sélectionne l'une des listes déroulantes et que le formulaire n'est pas envoyé.

Uncaught TypeError: la propriété 'submit' de # objet n'est pas une fonction

<form action="categories/view/52" method="post" accept-charset="utf-8" id="myform" name="myform"> 
<select name="sort" ID="sort_type" onchange='document.forms["myform"].submit();'> 
    <option value="label">Sort</option> 
    <option value="price-low-high">Price: Low - High</option> 
    <option value="price-high-low" selected="selected">Price: High - Low</option> 
    <option value="name-a-z">Name A - Z</option> 
    <option value="name-z-a">Name Z - A</option> 
    <option value="date-added-new">Date Added - New</option> 
    <option value="date-added-old">Date Added - Old</option> 
</select> 
<select name="limit" ID="sort_type" onchange='document.forms["myform"].submit();'> 
    <option value="items_3" selected="selected">3</option> 
    <option value="items_50">50</option> 
    <option value="items_100">100</option> 
    <option value="items_all">all</option> 
</select> 
<input type="submit" name="submit" value="submit" /> 
</form> 

Répondre

5

Puisque vous avez:

<input type="submit" name="submit" value="submit" /> 

La fonction d'envoi a été mis à mal avec cette HTMLElementNode.

La solution simple est de renommer ou supprimer le nom.

<input type="submit" value="submit" /> 

Si vous ne pouvez pas le renommer (parce que vous avez le code côté serveur qui dépend de cette valeur soumise et vous ne pouvez pas modifier le code côté serveur), vous pouvez:

document.createElement('form').submit.call(document.forms["myform"]); 
+0

Oh la cause je nouvelle que ce serait quelque chose de simple que je recherchais plus, cela fonctionne maintenant, merci beaucoup! – flyersun

3

La raison de l'erreur lorsque vous essayez d'appeler form.submit() est que votre bouton d'envoi s'appelle "submit". Cela signifie que la propriété "submit" de votre objet Form est maintenant une référence au bouton submit, remplaçant la méthode "submit" du prototype du formulaire. Renommer le bouton d'envoi vous permet d'appeler la méthode submit() sans erreur.

<input type="submit" name="submitEle" value="submit" /> 

devrait fonctionner

Questions connexes