mis à jour en mars 2012.
Donc, deux ans après avoir répondu à cette question à l'origine, je reviens pour voir qu'elle s'est pratiquement transformée en un gros gâchis. Je pense qu'il est temps que j'y revienne et que ma réponse soit vraiment correcte car c'est la plus votée + acceptée.
Pour mémoire, la réponse de Titi est fausse car ce n'est pas ce que l'affiche originale demandait - il est vrai qu'il est possible de réinitialiser un formulaire en utilisant la méthode native reset (), mais cette question essaie d'effacer un formulaire hors de souvenir valeurs qui resteraient dans le formulaire si vous le réinitialisiez de cette façon. C'est pourquoi une réinitialisation "manuelle" est nécessaire. Je suppose que la plupart des gens se sont retrouvés dans cette question à partir d'une recherche Google et recherchent vraiment la méthode reset (), mais cela ne fonctionne pas pour le cas spécifique dont l'OP parle.
Ma réponse originale était la suivante:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
Ce qui pourrait fonctionner pour de nombreux cas, y compris pour l'OP, mais comme indiqué dans les commentaires et dans d'autres réponses, les éléments radio / case à cocher seront supprimés de tous les attributs de valeur.
Une réponse plus correcte (mais pas parfaite) est:
function resetForm($form) {
$form.find('input:text, input:password, input:file, select, textarea').val('');
$form.find('input:radio, input:checkbox')
.removeAttr('checked').removeAttr('selected');
}
// to call, use:
resetForm($('#myform')); // by id, recommended
resetForm($('form[name=myName]')); // by name
Utilisation de la :text
, :radio
etc. sélecteurs par eux - mêmes est considéré comme une mauvaise pratique par jQuery comme ils finissent par l' évaluation à*:text
ce qui en fait prendre beaucoup plus que prévu. Je préfère l'approche de la liste blanche et j'aurais aimé l'avoir utilisée dans ma réponse d'origine. Quoi qu'il en soit, en spécifiant leinput
partie du sélecteur, plus le cache de l'élément de formulaire, cela devrait en faire la réponse la plus performante ici.
Cette réponse pourrait encore présenter des défauts si la valeur par défaut des utilisateurs pour les éléments sélectionnés n'est pas une option qui a une valeur vide, mais elle est certainement aussi générique qu'elle va l'obtenir et cela devrait être traité au cas par cas. .
not()
si votre formulaire a des entrées cachées.