Domanda

Tutti,

posso ripristinare tutti i miei elementi del modulo con la seguente sintassi JQuery:

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

Come posso modificare questo per escludere l'azzeramento dei valori "select box"?

Grazie

È stato utile?

Soluzione

Per tutti ..

la funzione di reset non impostare tutto a '' (stringa vuota)

è ripristinato ai valori iniziali .. (immagazzinate nella attributo value, o l'opzione ecc .. selezionato)

Se si desidera mantenere le caratteristiche di ripristino di default allora si dovrebbe

  1. ottenere tutti gli elementi <select>
  2. ottenere i loro valori attualmente selezionati
  3. ripristinare il modulo come attualmente fa
  4. ri-impostare il selezionato

Esempio:

<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>

Altri suggerimenti

Non è jQuery, è javascript nativo. [0] mette in evidenza l'elemento effettivo DOM, in modo che sia lo stesso di:

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

reset() è un'implementazione del browser incorporato che ripristina l'intera forma. Se è necessario ripristinare i singoli tipi di modulo, provare qualcosa di simile:

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

È possibile visualizzare tutti i selettori del modulo qui: http://docs.jquery.com/Selectors

Si può fare un reset falso impostando i valori da una stringa vuota e il ripristino delle caselle di controllo usando la risposta di David (o questo più completa uno ). Si potrebbe anche provare la memorizzazione di valore di ciascun elemento di selezione prima di ripristinare la forma e quindi ripristinare i valori dopo:

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')); 
});

Per una qualche ragione, di David destro sulla risposta error'd mia Google Chrome js. Sta dicendo:

TypeError Uncaught: Proprietà 'Reset' dell'oggetto # non è una funzione

... così ho deciso di provare una soluzione leggermente diversa:

  • Dare pulsanti di reset browser nativo attributi "nascosto" e impostare "id":

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

  • Iniziato JQuery "click" sul pulsante di reset evento da collegamento cliccando:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top