La lógica en el controlador de eventos change()
no se ejecuta cuando val()
establece el valor, pero se ejecuta cuando el usuario selecciona un valor con el mouse. ¿Por qué es esto?
<select id="single"> <option>Single</option> <option>Single2</option> </select> <script> $(function() { $(":input#single").change(function() { /* Logic here does not execute when val() is used */ }); }); $("#single").val("Single2"); </script>
Debido a que el evento de change
requiere un evento de navegador real iniciado por el usuario en lugar de mediante un código JavaScript.
Haz esto en su lugar:
$("#single").val("Single2").trigger('change');
o
$("#single").val("Single2").change();
Agregar este fragmento de código después de val() parece funcionar:
$(":input#single").trigger('change');