Pregunta

Tengo un complemento jQuery registrado en un menú desplegable como este:

$('#country').linkToStates('#province');

Estoy seleccionando manualmente el menú desplegable así:

$('#country').val('United States');

Pero el evento Onchange no está activando .linkTostates () que se registró antes. Por lo tanto, parece que Val () solo cambia la posición desplegable, pero en realidad no cambia el evento Onchange. ¿Alguien puede ayudar?

Por cierto, este es el código de lo registrado si ayuda:

  $.fn.extend({
        linkToStates: function(state_select_id) {
      $(this).change(function() {
        var country = $(this).attr('value');
        $(state_select_id).removeOption(/.*/);
        switch (country) {
          case 'Canada':
            $(state_select_id).addOption(canadian_provinces, false);
            break;
          case 'United States':
            $(state_select_id).addOption(us_states, false);
            break;
          default:
            $(state_select_id).addOption({ '' : 'Please select a Country'}, false);
            break;
        }
      });
    }
  });
¿Fue útil?

Solución

Prueba esto:

$('#country').val('United States').trigger('change');

o incluso

$('#country').val('United States').change();

Podrías leer más sobre .trigger() aquí y .change() aquí

Otros consejos

Podría poner su código OnChanged en una función separada y luego llamarlo después de cambiar el valor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top