web-dev-qa-db-fra.com

La propriété 'submit' de l'objet # <HTMLFormElement> n'est pas une fonction

Quelqu'un peut-il m'expliquer ce que signifie cette erreur? Je l'apprécierais beaucoup pour toute sorte d'aide à ce sujet.

<form class="form" id="form" action="/mailer.php" method="post">

Le code Jquery que j'utilise pour cela est le suivant.

$('#form').submit();  
50
Andrew Allen West

Vérifiez le formulaire pour voir s'il existe un HTMLInputElement dont l'ID ou le nom est submit.

Cela affectera une propriété submit à HTMLFormElement, de sorte que la fonction submit qui se trouve dans le prototype de l'élément de formulaire ne peut pas être exécutée.

Exemple:

<form class="form" id="form" action="/mailer.php" method="post">
    ​<input type="button" name="submit" value="go"/>
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

js:

​console.log($("#form")[0].submit)​;​  // will be the button element, not the submit function.

la méthode .submit() de jQuery appellera .submit() sur l'élément dom d'origine, donc l'erreur se produira.

139
xdazz

xdazz a bien expliqué le problème.

Vous pouvez utiliser une méthode native submit de HTMLFormElement pour contourner un problème:

HTMLFormElement.prototype.submit.call($('#form')[0]);
27
ainokna

Si vous avez un bouton ou une entrée avec le nom soumettre ou id soumettre, j'ai vu des erreurs dans IE. Assurez-vous que vos entrées sont correctement nommées. Voici un article à ce sujet http://bugs.jquery.com/ticket/1414

6
Alex Reynolds