2009-02-13 7 views
8

Tengo un formulario con algunos elementos seleccionados que tienen eventos onChange adjuntos. Me gustaría que el evento se active incluso cuando alguien hace clic en el botón de reinicio del formulario.¿Un botón de reinicio de formulario activa elementos selectos en el evento Cambio?

Mi pregunta es: ¿restablecer un formulario de disparo a elementos seleccionados en evento de cambio?

Aquí está un ejemplo sencillo en 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> 

Gracias!

+1

¿No sería más fácil ir y probar esto? – Powerlord

+1

Lo probé y no funciona. Ni siquiera estoy seguro de si es posible, así que es por eso que pregunté. Estrechándolo a mi error, o al hecho de que simplemente no puedes hacerlo. – user22730

+1

@Powerlord Tengo que decir que siempre pienso que "simplemente pruébalo" es una sugerencia terrible. El OP solo descubrirá si algo funciona en su navegador/versión. Una solución mucho mejor es seguir los estándares oficiales/documentación API. – osullic

Respuesta

3

No es una etiqueta onreset de formas, por lo que podría hacer algo como:

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

Este método se llama antes de que ocurra el restablecimiento, aunque por lo que puede ser complicado. Supongo que puedes hacer un "¿Estás seguro?" caja. Lanzar un setTimeout en la función de reinicio parece ser el truco.

2

La respuesta de Jack M. está funcionando bien. Aquí hay otro enfoque para hacer lo mismo. Espero que ayude a alguien.

Escriba el código/eventos que desea llamar en medio de esta función. He probado esto Trabajando bien.

$(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 
    }); 
}); 
Cuestiones relacionadas