2009-05-23 2 views
73

Desidero attivare l'evento change del dropdown in $ (document) .ready utilizzando jquery.Trigger change event of dropdown

Ho un menu a cascata per paese e stato nella pagina dei dettagli utente. come posso impostare il valore (che è preso da DB in base all'id utente) per paese e stato in MVC con C#.

+0

Si potrebbe desiderare di inserire altri tag come javascript e jQuery per ottenere questo risultato più – xenon

+0

Bloccato anche qui, grazie! –

+0

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

risposta

156

Non so che molto JQuery ma ho sentito che permette al fuoco nativo eventi con questa sintassi.

$(document).ready(function(){ 

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

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

Altre informazioni here.

+26

'$ ('# countrylist'). Change();' funziona anche ora. – Edgar

+11

Devi dichiarare il gestore di eventi change prima di chiamare 'trigger()' o anche 'change()' come mostrato correttamente in questa risposta, cioè, se il codice del gestore di eventi appare al di sotto della chiamata, non succede nulla! :) –

+3

@LenielMacaferi Grazie per avermi salvato un'ora o due. –

2

Se si sta tentando di disporre di menu a discesa collegati, il modo migliore per farlo è disporre di uno script che restituisca una casella di selezione precompilata e una chiamata AJAX che lo richiede.

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); 
      } 
     }); 
    }); 

}); 

Poi hanno un arco intorno al tuo stato di selezione di dialogo con l'id di "stateBoxHook"

+0

I dropdown a cascata: <% = Html.DropDownList ("MyCountries", "- - Seleziona Paese --- ")%> <% = Html.CascadingDropDownList (" MyStates "," MyCountries ")%> Posso impostare il valore di MyCountries come $ (" # MyCountries "). Val ('<% = Model.CountryId%>'); in $ (documento) .ready. Ma non sono in grado di impostare il valore per stato in quanto mostra solo un'opzione "Seleziona stato", che deve essere riempita sull'evento onchange paese in quanto sono elenchi a cascata. Questo è un problema reale. – Prasad

+0

Ancora non sei sicuro di cosa stai cercando. Stai cercando di ottenere un sistema in base al quale seleziona un paese e limita l'elenco agli stati di quel paese? Se questo è il caso, è necessario avere una chiamata AJAX al server e inviare il paese selezionato e quindi restituire una lista di stati in quel paese. – xenon

+0

Ho impostato USA come Paese e Alabama come stato che è un menu a cascata, aggiungendo il profilo utente. E quando torno a quella pagina per modificare un campo, ho bisogno di Paese e Stato per essere popolato con i valori che ho impostato in precedenza. Non ho problemi ad aggiungere il profilo utente, quando torno alla pagina da modificare, sono in grado di impostare il valore per il menu a discesa Paese e nel menu a discesa dello stato i valori non vengono riempiti poiché è a cascata che viene riempito evento di modifica del valore del paese. Per questo ho bisogno di attivare l'evento di modifica del paese in modo che lo stato si riempia e posso impostare lo stato – Prasad

10

Prova questo:

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

Definire l'evento di modifica, e attivare immediatamente. Questo assicura che il gestore di eventi sia definito prima di chiamarlo.

potrebbe essere tardi per rispondere al manifesto originale, ma qualcun altro potrebbe beneficiare della notazione abbreviata, e questo segue il concatenamento di jQuery, ecc

jquery chaining

1

Prova questo:

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

Funziona per me.

Su una linea insieme con l'impostazione del valore: $('#id').val(16).change();

+0

$ ('# id'). Val (16) .change(); lo ha fatto per me. – TomoMiha

+0

Grazie, @TomoMiha. Aggiunto nella risposta. –

1

alternativa si può mettere onchange attributo dropdownlist stessa, che onchange chiamerà certa funzione jquery simili.

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

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

speranza questo ti aiuta, e si prega di notare che questo codice è solo un progetto di massima, non testato su qualsiasi IDE. grazie

+0

Questo non innesca l'evento change quando viene caricata prima la pagina (come da domanda dell'OP) –