Question

J'ai un jQuery plug-in inscrit sur une liste déroulante comme ceci:

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

Je suis sélectionner manuellement le menu déroulant comme ceci:

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

Mais l'événement onchange ne déclenche pas .linkToStates () qui a été enregistrée avant. Il semble donc que val () ne change la baisse en position basse, mais ne change pas vraiment l'événement onchange. Quelqu'un peut-il aider?

BTW, voici le code du enregistré si elle aide:

  $.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;
        }
      });
    }
  });
Était-ce utile?

La solution

Essayez ceci:

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

ou même

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

Vous pouvez lire plus sur .trigger() et .change() ici

Autres conseils

Vous pouvez simplement mettre votre code onChanged dans une fonction séparée, puis l'appeler après avoir modifié la valeur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top