2011-04-27 8 views
11

tengo un plugin de jQuery registrado en un menú desplegable de la siguiente manera:Cómo seleccionar jQuery drop down val() Y desencadenar el evento?

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

estoy seleccionando manualmente el menú desplegable de la siguiente manera:

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

Pero el evento onchange no está activando .linkToStates() que fue registrado 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 del domicilio 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; 
     } 
     }); 
    } 
    }); 

Respuesta

22

Prueba esto:

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

o incluso

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

Usted puede leer más sobre .trigger()here y .change()here

+0

por alguna razón no está disparando evento de cambio cada vez. Aquí está mi código. 'var jQuery2 = jQuery.noConflict(); \t jQuery2 ('# shipping_method_0'). Val ('flat_rate'). Change(); '. ¿Puedes ayudarme? – Vidhi

0

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

Cuestiones relacionadas