2009-05-23 12 views
73

Quiero desencadenar el evento de cambio del menú desplegable en $ (documento) .ready utilizando jquery.Evento de cambio de desencadenante del menú desplegable

Tengo un menú desplegable en cascada para el país y el estado en la página de detalles del usuario. ¿Cómo puedo establecer el valor (que se toma de DB basado en la identificación del usuario) para el país y el estado en MVC con C#.

+0

Es posible que desee poner un poco más de etiquetas como javascript y jQuery para obtener esto encontró más – xenon

+0

Atascado aquí también, gracias! –

+0

http://stackoverflow.com/questions/31913370/set-or-change-thg-tortoisehg-branch-color/31913530#31913530 – LarryHuff

Respuesta

156

no sé que gran parte jQuery pero he oído que permite disparar nativa eventos con esta sintaxis

$(document).ready(function(){ 

    $('#countrylist').change(function(e){ 
     // Your event handler 
    }); 

    // And now fire change event when the DOM is ready 
    $('#countrylist').trigger('change'); 
}); 

Más información here.

+26

'$ ('# countrylist'). Change();' también funciona ahora. – Edgar

+11

Debe declarar el controlador de eventos de cambio antes de llamar a 'trigger()' o incluso 'change()' como se muestra correctamente en esta respuesta, es decir, si el código del controlador de eventos aparece debajo de la llamada, ¡no pasa nada! :) –

+3

@LenielMacaferi Gracias por salvarme una hora o dos. –

2

Si está intentando vincular los menús desplegables, la mejor manera de hacerlo es tener un script que devuelva el cuadro de selección precompilado y una llamada AJAX que lo solicite.

Here is the documentation for jQuery's Ajax method if you need it.

$(document).ready(function(){ 

    $('#countrylist').change(function(e){ 
     $this = $(e.target); 
     $.ajax({ 
      type: "POST", 
      url: "scriptname.asp", // Don't know asp/asp.net at all so you will have to do this bit 
      data: { country: $this.val() }, 
      success:function(data){ 
       $('#stateBoxHook').html(data); 
      } 
     }); 
    }); 

}); 

Entonces tengo una capacidad de alrededor de su cuadro de selección del estado con el ID de "stateBoxHook"

+0

Tengo menús en cascada: <% = Html.DropDownList ("MyCountries", "- --Seleccione País --- ")%> <% = Html.CascadingDropDownList (" MyStates "," Mycountries ")%> Puedo establecer el valor de MyCountries como $ (" # MyCountries "). Val ('<% = Model.CountryId%>'); en $ (documento) .ready. Pero no puedo establecer el valor de estado, ya que muestra solo una opción "Seleccionar estado", que se debe completar en el evento onchange del país, ya que son elementos desplegables en cascada. Este es un problema real. – Prasad

+0

Todavía no estoy seguro de lo que está buscando. ¿Está tratando de lograr un sistema mediante el cual seleccionen un país y reduzca la lista a los estados de ese país? Si este es el caso, deberá tener una llamada AJAX al servidor y enviar el país seleccionado y luego devolver un liste de estados en ese país. – xenon

+0

He configurado EE. UU. Como país y Alabama como estado, que es un menú desplegable en cascada, al tiempo que agrego el perfil de usuario. Y cuando regrese a esa página para Editar un campo, necesito que se rellene el País y el Estado con los valores que he establecido previamente. No tengo problemas para agregar el perfil de usuario, cuando regrese a la página Editar, puedo establecer el valor para el menú desplegable País y en el menú desplegable de estado los valores no se completan ya que está en cascada y se completa evento de cambio de valor del país. Para esto necesito activar el evento de cambio de país para que el estado se llene y puedo establecer el estado – Prasad

10

Prueba esto:

$(document).ready(function(event) { 
    $('#countrylist').change(function(e){ 
     // put code here 
    }).change(); 
}); 

Definir el evento de cambio, y desencadenar inmediatamente. Esto garantiza que el controlador de eventos esté definido antes de llamarlo.

podría ser tarde para responder a su creador original, pero alguien más podría beneficiarse de la notación abreviada, y esto sigue encadenamiento de jQuery, etc

jquery chaining

1

Prueba esto:

$('#id').change();

Funciona para mí.

en una línea junto con el establecimiento del valor: $('#id').val(16).change();

+0

$ ('# id'). Val (16) .change(); lo hizo por mí. – TomoMiha

+0

Gracias, @TomoMiha. Lo agregué en la respuesta –

1

, alternativamente, se puede poner onchange atributo en la propia lista desplegable, que onchange llamarán a cierta función jQuery como este.

<input type="dropdownlist" onchange="jqueryFunc()"> 

<script type="text/javascript"> 
$(function(){ 
    jqueryFunc(){ 
     //something goes here 
    } 
}); 
</script> 

esperanza éste le ayuda, y por favor tenga en cuenta que este código es sólo un borrador, no han sido evaluados en cualquier IDE. gracias

+0

Esto no activa el evento de cambio cuando la página se carga por primera vez (según la pregunta de OP) –

Cuestiones relacionadas