JQuery – Réinitialisation du formulaire – Exclure la zone "Sélectionner"

Tout,

Je peux réinitialiser tous mes éléments de formulaire en utilisant la syntaxe JQuery suivante:

('#myform')[0].reset(); 

Comment puis-je modifier ceci pour exclure la réinitialisation des valeurs "sélectionner la boîte"?

Merci

À tout le monde..

La fonction de réinitialisation ne règle pas tout sur '' (chaîne vide)

Il réinitialise leurs valeurs initiales … (stocké dans l'attribut de valeur, ou l'option sélectionnée etc.)

Si vous souhaitez maintenir les fonctions de réinitialisation par défaut, vous devriez

  1. Obtenez tous les éléments <select>
  2. Obtenez leurs valeurs actuellement sélectionnées
  3. Réinitialiser le formulaire comme vous le faites actuellement
  4. Rétablissez les paramètres sélectionnés

Exemple:

 <script type="text/javascript"> $(document).ready( function(){ $("#resetbutton").click( function(){ var values = []; var selected = $("select").each( function(){ values.push( $(this).val()); }); this.form.reset(); for (i=0;i<selected.length;i++) $(selected[i]).val(values[i]); }); } ); </script> 

Ce n'est pas jQuery, c'est le javascript natif. [0] met en évidence l'élément DOM actuel, donc c'est le même que:

 document.getElementById('myform').reset(); 

reset() est une implémentation de navigateur intégrée qui réinitialise l'intégralité du formulaire. Si vous devez réinitialiser les types de formulaires individuels, essayez quelque chose comme:

 $('#myform :text').val(''); 

Vous pouvez voir tous les sélecteurs de formulaire ici: http://docs.jquery.com/Selectors

Vous pouvez effectuer une fausse réinitialisation en définissant les valeurs sur une chaîne vide et en réinitialisant les cases en utilisant la réponse de David (ou celle plus complète ). Vous pouvez également essayer de stocker la valeur de chaque élément sélectionné avant de réinitialiser le formulaire, puis de restaurer les valeurs après:

 var myform = $('#myform'); var selects = $('select', myform); // Store each current value selects.each(function() { $(this).data('previous', $(this).val()); }); myform[0].reset(); // Restore the values selects.each(function() { $(this).val($(this).data('previous')); }); 

Pour une raison ou une autre, l'erreur de réponse de David a eu mes j. Google Chrome. C'est dire:

Uncaught TypeError: Property 'reset' de l'objet # n'est pas une fonction

… alors j'ai décidé d'essayer une solution légèrement différente:

  • Indiquez les attributs des boutons de réinitialisation du navigateur natif "caché" et définissez "id":

<input id="resetbutton" type="reset" style="visibility:hidden;" name="reset" value="reset" />

  • Démarrez l'événement "cliquez" JQuery sur le bouton de réinitialisation pour cliquer sur le lien:

<a href="#" onclick="$('#resetbutton').click();">Reset</a>