2009-02-13 13 views
8

Ho un modulo con alcuni elementi selezionati che hanno eventi onChange collegati ad essi. Vorrei che l'evento si attivasse anche quando qualcuno fa clic sul pulsante di ripristino del modulo.Un pulsante di reimpostazione del modulo attiva un elemento select onChange event?

La mia domanda è: reimpostare un modulo attiva un elemento select su evento Change?

Ecco un semplice esempio in jQuery

<script type="text/javascript"> 
    $('.myselect').change(function() { 
     // do something on change 
    }); 
</script> 

<form action="/" method="post"> 
    <select class="myselect" name="select1"> 
     <option value="1">First</option> 
     <option value="2">Second</option> 
    </select> 
    <select class="myselect" name="select2"> 
     <option value="1">First</option> 
     <option value="2">Second</option> 
    </select> 
    <!-- When this is clicked I would like it fire the change event --> 
    <input type="reset" value="Reset" /> 
    <input type="submit" value="Save" /> 
</form> 

Grazie!

+1

Non sarebbe solo più facile andare a testare questo? – Powerlord

+1

L'ho provato e non funziona. Non sono nemmeno sicuro se sia possibile ed è per questo che ho chiesto. Restringendolo al mio errore, o al fatto che non puoi farlo. – user22730

+1

@Powerlord Devo dire, penso sempre che "basta provarlo" è un terribile suggerimento. L'OP scoprirà solo se qualcosa funziona nel suo browser/versione. Una soluzione molto migliore è seguire la documentazione ufficiale sugli standard/API. – osullic

risposta

3

C'è un tag onreset per le forme, così si potrebbe fare qualcosa di simile:

<script type="text/javascript"> 
    var changeFunc = function() { 
     // do something on change. 
    }; 
    $('.myselect').change(changeFunc); 
</script> 

<form onReset="changeFunc()" action="/" method="post"> 
    <select class="myselect" name="select1"> 
     <option value="1">First</option> 
     <option value="2">Second</option> 
    </select> 
    <select class="myselect" name="select2"> 
     <option value="1">First</option> 
     <option value="2">Second</option> 
    </select> 
    <!-- When this is clicked I would like it fire the change event --> 
    <input type="reset" value="Reset" /> 
    <input type="submit" value="Save" /> 
</form> 

Questo metodo viene chiamato prima il reset avviene, anche se così può essere difficile. Immagino che tu possa fare un "Sei sicuro?" scatola. Lanciare un setTimeout nella funzione di reset sembra fare il trucco.

2

La risposta di Jack M. funziona correttamente. Ecco un altro approccio per fare lo stesso. Spero che possa aiutare qualcuno.

Scrivere codice/eventi che si desidera chiamare al centro di questa funzione. Ho provato questo. Funzionando bene.

$(document).ready(function() { 
    $("input:reset").click(function() {  // apply to reset button's click event 
     this.form.reset();     // reset the form 

     // call your functions to be executed after the reset  

     return false;       // prevent reset button from resetting again 
    }); 
});