J'ai un formulaire avec un bouton de réinitialisation standard codé ainsi:
<input type="reset" class="button standard" value="Clear" />
Le problème est que ledit formulaire est du type à plusieurs étapes, donc si un utilisateur remplit une étape puis revient plus tard, les valeurs `` mémorisées '' pour les différents champs ne seront pas réinitialisées lorsque vous cliquerez sur le bouton Effacer.
Je pense qu'attacher une fonction jQuery pour boucler sur tous les champs et les effacer «manuellement» ferait l'affaire. J'utilise déjà jQuery dans le formulaire, mais je ne fais que me mettre à jour et je ne sais donc pas comment procéder, à part référencer individuellement chaque champ par ID, ce qui ne semble pas très efficace.
TIA pour toute aide.
not()
si votre formulaire a des entrées cachées.Réponses:
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:
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:
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. .
la source
.val('')
toutes les valeurs sont réinitialisées''
même si ces valeurs sont utilisées dans les boutons radio et les cases à cocher. Ainsi, lorsque j'exécute le code ci-dessus, je perds des informations précieuses du formulaire, pas seulement ce que l'utilisateur a entré.Depuis http://groups.google.com/group/jquery-dev/msg/2e0b7435a864beea :
le paramètre
myinput.val('')
peut ne pas émuler "reset" à 100% si vous avez une entrée comme celle-ci:Par exemple, appeler
myinput.val('')
une entrée avec une valeur par défaut de 50 la mettra dans une chaîne vide, tandis que l'appel lamyform.reset()
réinitialisera à sa valeur initiale de 50.la source
Il y a un gros problème avec la réponse acceptée de Paolo. Considérer:
La
.val('')
ligne effacera également toutesvalue
les cases attribuées aux cases à cocher et aux boutons radio. Donc si (comme moi) vous faites quelque chose comme ça:L'utilisation de la réponse acceptée transformera vos entrées en:
Oups - J'utilisais cette valeur!
Voici une version modifiée qui conservera vos valeurs de case à cocher et de radio:
la source
select
éléments. Pouvez-vous réparer ceci?:text
,:password
etc. sélecteurs par eux - mêmes , sans préciser lainput
partie, sinon il évalue à*:text
qui passe par tous les éléments dans le document au lieu de simplement les<input>
balises avecinput:text
#myFormId
contexte passé comme deuxième argument à$()
- c'est-à-dire$(':input', '#context')
- c'est identique à$('#context').filter(':input')
Plugin jQuery
J'ai créé un plugin jQuery pour pouvoir l'utiliser facilement partout où j'en ai besoin:
Alors maintenant, je peux l'utiliser en appelant:
la source
.prop("checked", false)
? stackoverflow.com/questions/5874652/prop-vs-attrEffacer les formulaires est un peu délicat et pas aussi simple qu'il n'y paraît.
Nous vous suggérons d' utiliser le plugin de formulaire jQuery et d'utiliser ses fonctionnalités clearForm ou resetForm . Il prend en charge la plupart des cas d'angle.
la source
document.getElementById ('frm'). reset ()
la source
Je fais habituellement:
ou
la source
Voici quelque chose pour vous aider à démarrer
Bien sûr, si vous avez des cases à cocher / boutons radio, vous devrez les modifier pour les inclure également et définir
.attr({'checked': false});
modifier la réponse de Paolo est plus concise. Ma réponse est plus verbeuse car je ne connaissais pas le
:input
sélecteur et je n'ai pas pensé à supprimer simplement l'attribut vérifié.la source
Pensez à utiliser le plugin de validation - c'est génial! Et la réinitialisation du formulaire est simple:
la source
Je trouve que cela fonctionne bien.
la source
fondamentalement aucun des solutions fournies ne me satisfait. comme l'ont souligné quelques personnes, ils vident le formulaire au lieu de le réinitialiser.
cependant, il existe quelques propriétés javascript qui aident:
ceux-ci stockent la valeur d'un champ lors du chargement de la page.
écrire un plugin jQuery est maintenant trivial: (pour les impatients ... voici une démo http://jsfiddle.net/kritzikratzi/N8fEF/1/ )
plugin-code
usage
quelques notes ...
$( "#container" ).resetValue()
ne fonctionnera pas. utilisez toujours à la$( "#container :input" )
place.la source
Vous pourriez constater que cela est en fait plus facile à résoudre sans jQuery.
En JavaScript normal, c'est aussi simple que:
J'essaie de toujours me rappeler que même si nous utilisons jQuery pour améliorer et accélérer notre codage, parfois ce n'est pas vraiment plus rapide. Dans ces cas, il est souvent préférable d'utiliser une autre méthode.
la source
J'ai fait une légère variation de la belle solution de Francis Lewis . Ce que sa solution ne fait pas, c'est que les listes déroulantes soient vides. (Je pense que lorsque la plupart des gens veulent "effacer", ils veulent probablement rendre toutes les valeurs vides.) Celui-ci le fait avec
.find('select').prop("selectedIndex", -1)
.la source
J'ajoute normalement un bouton de réinitialisation caché au formulaire. au besoin: $ ('# reset'). click ();
la source
Modification de la réponse la plus votée à la
$(document).ready()
situation:la source
Utilisez simplement ce qui
jQuery Trigger event
suit:Cela réinitialisera les cases à cocher, les boutons radio, les zones de texte, etc ... Essentiellement, cela remettra votre formulaire à son état par défaut. Mettez simplement l'
#ID, Class, element
intérieur dujQuery
sélecteur.la source
cela a fonctionné pour moi, la réponse pyrotex n'a pas réinitialisé les champs de sélection, a pris le sien, voici ma modification:
la source
J'utilise la solution Paolo Bergantino qui est géniale mais avec quelques ajustements ... Plus précisément pour travailler avec le nom du formulaire au lieu d'un identifiant.
Par exemple:
Maintenant, quand je veux l'utiliser, je pourrais faire
Comme vous le voyez, cela fonctionne avec n'importe quel formulaire, et comme j'utilise un style css pour créer le bouton, la page ne s'actualisera pas lorsque vous cliquez dessus. Merci encore Paolo pour votre contribution. Le seul problème est que si j'ai des valeurs par défaut dans le formulaire.
la source
J'ai utilisé la solution ci-dessous et cela a fonctionné pour moi (mélange de javascript traditionnel avec jQuery)
la source
Je suis juste un intermédiaire en PHP, et un peu paresseux pour plonger dans un nouveau langage comme JQuery, mais le suivant n'est-il pas une solution simple et élégante?
Je ne vois pas pourquoi vous n'avez pas deux boutons d'envoi, simplement à des fins différentes. Alors simplement:
Vous redéfinissez simplement vos valeurs à ce que la valeur par défaut est censée être.
la source
Une méthode que j'ai utilisée sur un formulaire assez volumineux (plus de 50 champs) consistait à recharger le formulaire avec AJAX, essentiellement en rappelant le serveur et en renvoyant les champs avec leurs valeurs par défaut. Cela est beaucoup plus facile que d'essayer de saisir chaque champ avec JS, puis de le définir sur sa valeur par défaut. Cela m'a également permis de conserver les valeurs par défaut en un seul endroit - le code du serveur. Sur ce site, il y avait aussi des valeurs par défaut différentes selon les paramètres du compte et donc je n'avais pas à me soucier de les envoyer à JS. Le seul petit problème que j'ai dû traiter était certains champs de suggestion qui nécessitaient une initialisation après l'appel AJAX, mais ce n'était pas grave.
la source
Toutes ces réponses sont bonnes mais la façon la plus simple de le faire est avec une fausse réinitialisation, c'est-à-dire que vous utilisez un lien et un bouton de réinitialisation.
Ajoutez simplement du CSS pour masquer votre véritable bouton de réinitialisation.
Et puis sur votre lien vous ajoutez comme suit
J'espère que cela t'aides! UNE.
la source
la source
Ici avec l'actualisation des cases à cocher et sélectionne:
la source
J'avais le même problème et le poste de Paolo m'a aidé, mais je devais ajuster une chose. Mon formulaire avec id advancedindexsearch contenait uniquement des champs de saisie et obtient les valeurs d'une session. Pour une raison quelconque, les éléments suivants n'ont pas fonctionné pour moi:
Si je mets une alerte après cela, j'ai vu les valeurs supprimées correctement mais ensuite elles ont été remplacées à nouveau. Je ne sais toujours pas comment ni pourquoi, mais la ligne suivante a fait l'affaire pour moi:
la source
La réponse de Paolo ne tient pas compte des sélecteurs de dates, ajoutez ceci dans:
la source
J'ai apporté une petite amélioration à la réponse originale de Paolo Bergantino
De cette façon, je peux passer n'importe quel élément de contexte à la fonction. Je peux réinitialiser l'intégralité du formulaire ou seulement un certain ensemble de champs, par exemple:
De plus, les valeurs par défaut des entrées sont conservées.
la source
voici ma solution, qui fonctionne également avec les nouveaux types d'entrée html5:
la source
break
dessous des cascheckbox
etradio
. Il n'est pas nécessaire pour cela dans sa position actuelle.En complément de la réponse acceptée, si vous utilisez le plug-in SELECT2, vous devez rappeler le script select2 pour apporter des modifications à tous les champs select2:
la source
la source