Comment puis-je réinitialiser un formulaire en ajax de rappel?
Je suis l'envoi d'un formulaire à l'aide d'ajax simple et renvoyer les résultats dans un div au-dessus du formulaire. Le problème est qu'une fois que le formulaire est soumis et validé, j'affiche un grand merci et souhaitez réinitialiser le formulaire de manière à ne pas appuyez simplement sur le bouton soumettre de nouveau... n'arrive pas à trouver le bon code pour ce faire...
<form id="myForm" target="sendemail.php" method="post">
<div id="results"></div>
<input type="text" name="value1">
<input type="text" name="value2">
<input type="submit" name="submit">
</form>
Donc, ma sendemail.php les erreurs de validation et de succès messages apparaissent dans les #résultats sans problèmes.
Mais... quand j'essaie d'envoyer un javascript formulaire de commande de réinitialisation, il ne fonctionne pas. Naturellement, je ne le vois pas dans le code source, c'est un AJAX rappel donc je ne sais pas si c'est la question ou si je suis juste en utilisant la mauvaise syntaxe.
echo "<p>Thank you. Your message has been accepted for delivery.</p>";
echo "<script type=\"text/javascript\">setTimeout('document.getElementById('myForm').reset();',1000);</script>";
Toutes les idées gourous?
OriginalL'auteur B.Gordon | 2010-03-22
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé
OriginalL'auteur bksi
First of all
changement
à
Pur javascript, vous pouvez:
mettre un vide script balise HTML:
en javascript n':
en PHP retourne:
il sera la cause d'un javascript de rappel à partir de php.
Avec jQuery
seulement ajouter de la
$('#myform')[0].reset();
OriginalL'auteur tym1193
La plupart des formes de nos jours surmonter le problème de certains utilisateurs en double-cliquant sur les boutons en faisant un
setAttribute('disabled', 'disabled')
sur le bouton soumettre. Vous voudrez peut-être faire un double whammy de cacher le formulaire complètement, et de mettre un bouton à sa place pour afficher le formulaire.OriginalL'auteur amphetamachine
Dans le fichier php qui génère les résultats, coller une
- Y et dites-le javascript pour le retour. Simple. Il rend également plus facile parce que si une erreur se produit, il suffit de changer le texte de sortie sans avoir à changer quoi que ce soit sur le côté client.
OriginalL'auteur Harley Watson
Personnellement, je le faire avec Jquery, en définissant les formulaires champs de vide une fois la soumission ajax retourne. Je pense que vous trouverez beaucoup de ressources sur StackOverflow ou ailleurs, si vous décidez d'aller dans cette voie.
OriginalL'auteur Tom
La suivante devrait fonctionner:
Avez-vous l'appel de la fonction? Vous pouvez ajouter un bouton de test comme suit: <input type="button" value="réinitialiser" onclick="resetForm()">
Désolé, je pense que j'ai mal lu votre question initiale. Je ne pense pas que vous devez utiliser setTimeout. Si vous appelez la réinitialisation directement, il doit travailler: echo "<script type=\"text/javascript\">document.getElementById('myForm').reset();</script>";
J'ai ajouté cet écho aux données qui est placé dans le div en cas de succès... Il ne fait rien (et je ne vois pas la source car il est injecté via ajax). Mais, la méthode bouton appelle le script et efface la forme donc je sais que la fonction fonctionne... il semble que l'appel peut ne pas être en train de faire quelque chose... peut-être hors de portée, car il va dans une fois que la page est déjà rendu?
OriginalL'auteur Templar
vous aurez besoin de la fonction eval() de l'ajax résultat une fois terminé. si vous utilisez quelque chose comme jquery, cela peut être fait très facilement.
$.ajax({ url: 'ajax/test.php', success: function(result) { eval(result); } }); vous pouvez générer du code javascript à l'intérieur test.php par exemple: alert("ceci est un test");
OriginalL'auteur Fixtree
Réel simple mais peut-être pas la meilleure façon de le faire est après qu'il valdidates faire un
et puis mettre
OriginalL'auteur user299416
le code ci-dessus permet de réinitialiser le formulaire en entier
OriginalL'auteur Austin Rodrigues