2009-05-23 11 views
73

Ich möchte das Änderungsereignis von Dropdown in $ (Dokument) .ready mit jquery auslösen.Trigger Änderungsereignis von Dropdown

Ich habe eine Dropdown-Dropdown-Liste für Land und Staat in Benutzerdetails Seite. Wie kann ich den Wert (der aus DB basierend auf der Benutzer-ID genommen wird) für Land und Staat in MVC mit C# setzen.

+0

Sie könnten einige mehr Tags wie Javascript und jQuery setzen, um diese mehr zu finden – xenon

+0

Stuck hier auch, danke! –

+0

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

Antwort

156

Ich weiß nicht so viel JQuery, aber ich habe gehört, es erlaubt nativer abzufeuern Ereignisse mit dieser Syntax.

$(document).ready(function(){ 

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

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

Weitere Informationen here.

+26

'$ ('# countrylist'). Change();' funktioniert jetzt auch. – Edgar

+11

Sie müssen den Change-Event-Handler vor dem Aufruf von 'trigger()' oder sogar 'change()' deklarieren, wie in dieser Antwort korrekt gezeigt, dh wenn der Event-Handler-Code unter dem Aufruf erscheint, passiert nichts! :) –

+3

@LenielMacaferi Vielen Dank für die Rettung von mir eine Stunde oder zwei. –

2

Wenn Sie versuchen, Dropdown-Listen zu verknüpfen, besteht die beste Möglichkeit darin, über ein Skript zu verfügen, das das vordefinierte Auswahlfeld und einen AJAX-Aufruf zurückgibt, der es anfordert.

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

}); 

haben dann eine Spanne um den Zustand Auswahlbox mit der ID von „stateBoxHook“

+0

Ich habe Dropdown-Cascading: <% = Html.DropDownList ("MyCountries", "- --Wählen Sie das Land --- ")%> <% = Html.CascadingDropDownList (" MyStates "," MyCountries ")%> Ich kann den Wert von MyCountries als $ (" # MyCountries ") festlegen. Val ('<% = Model.CountryId%>'); in $ (Dokument) .ready. Ich kann jedoch den Wert für den Status nicht festlegen, da er nur eine Option "Select State" anzeigt, die bei einem Land onchange-Ereignis gefüllt werden sollte, da es sich um kaskadierende Dropdown-Felder handelt. Dies ist ein tatsächliches Problem. – Prasad

+0

Noch nicht sicher, was Sie suchen. Versuchen Sie, ein System zu erreichen, in dem sie ein Land auswählen und die Liste auf die Staaten in diesem Land beschränken? Wenn dies der Fall ist, müssen Sie einen AJAX-Anruf an den Server senden und das ausgewählte Land senden und dann eine Liste der Staaten in diesem Land zurückgeben. – xenon

+0

Ich habe USA als Land & Alabama als Staat festgelegt, der ein kaskadierendes Dropdown ist, während das Benutzerprofil hinzugefügt wird. Und wenn ich auf diese Seite zurückkehre, um ein Feld zu bearbeiten, müssen Land und Staat mit den Werten gefüllt werden, die ich zuvor festgelegt habe. Ich habe kein Problem beim Hinzufügen des Benutzerprofils, wenn ich wieder auf die Seite zu Bearbeiten komme, kann ich den Wert für Land Drop-Down und im Status Drop-Down die Werte nicht als Kaskadierung, die Füllung wird gefüllt Land Wertänderung Ereignis. Dazu muss ich das Change Event des Landes auslösen, damit der State gefüllt wird und ich kann den Status setzen – Prasad

10

Try this:

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

das Änderungsereignis definieren und lösen sie sofort. Dies stellt sicher, dass der Event-Handler vor dem Aufruf definiert wird.

Might spät das ursprüngliche Plakat zu beantworten, aber jemand anderes aus der Kurzschreibweise profitieren könnten, und dies folgt jQuery Verkettungs, etc

jquery chaining

1

Versuchen Sie folgendes:

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

Funktioniert für mich.

Auf einer Linie zusammen mit dem Wert einstellen: $('#id').val(16).change();

+0

$ ('# id'). Val (16) .change(); habe es für mich getan. – TomoMiha

+0

Danke, @TomoMiha. Hinzugefügt in der Antwort. –

1

alternativ können Sie onChange Attribut auf den Dropdownlist setzen sich, dass Onchange bestimmte jquery Funktion wie folgt aufrufen wird.

hoffe, dass dieser Ihnen hilft, und bitte beachten Sie, dass dieser Code nur ein grober Entwurf ist, nicht auf irgendeine Idee getestet. Danke

+0

Dies löst das Änderungsereignis nicht aus, wenn die Seite zuerst geladen wird (gemäß der Frage des OP) –

Verwandte Themen