30 votes

Impossible de `soumettre ()` un formulaire html après avoir intercepté la soumission avec javascript

J'essaie d'intercepter la soumission d'un formulaire afin de changer la valeur de mon étiquette keywords .

J'ai le code suivant:

 <HTML>
<FORM name="searchForm" method="get" action="tmp.html" >
<input type="text" name="keywords" />
<input type="button" name="submit" value="submit" onclick="formIntercept();"/>
</FORM>
<SCRIPT language="JavaScript">
document.searchForm.keywords.focus();
function formIntercept( ) {
    var f = document.forms['searchForm'];
    f.keywords.value = 'boo';
    f.submit();
};
</SCRIPT>
</HTML>
 

Lorsque je l'exécute dans Chrome et que je clique sur le bouton Soumettre, le libellé des mots clés se transforme en boo , mais la console javascript indique:

  Uncaught TypeError: Property 'submit' of object <#an HtmlFormElement> is not a function.
 

Comment envoyer le formulaire avec les mots clés manipulés?

117voto

Chris Butler Points 1270

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

Renommer le bouton de soumission vous permettrait d'appeler la méthode submit() sans erreur.

9voto

Jason Points 91

Le problème est que lorsqu'un élément est <input type="submit" name="submit" /> méthode submit () ne fonctionnera pas. La meilleure solution à cette situation est de changer le nom de ce type de soumission en quelque chose d'autre, par exemple bouton-soumettre, etc.

0voto

Jacob Relkin Points 90729
<html>
<head></head>
<body>
<form name="searchForm" method="get" action="tmp.html" onsubmit="formIntercept(this);">
<input type="text" name="keywords" />
<input type="submit" name="submit" value="submit"/>
</form>
<script type="text/javascript">
document.searchForm.keywords.focus();
function formIntercept( form ) {
    form.keywords.value = 'boo';
    //form.submit();
}
</script>
</body>
</html>

0voto

Leif Gruenwoldt Points 3583

Voir jQuery .submit () .

 $("form").submit( function() {
   // TODO tweak your form data before it gets sent
});
 

0voto

Modifiez simplement le nom du bouton de soumission et cela fonctionnera!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X