2017-07-22 3 views
0

Ich versuche, Country-Ereignis zu ändern, wenn (ddlcountry) Wert auswählt, aber das Änderungsereignis kontinuierlich ausgelöst wird.Änderungsereignis nicht stoppen

$(document).ready(function() { 
    $('#ddlCountry').on('change', function() { 
     if ($('#ddlCountry option:selected').index() > 0) { 
      getStateDetails(); 
     } 
    }); 
    $('#ddlState').on('change', function() {     
     if ($('#ddlState option:selected').index() > 0) { 
      getCityDetails(); 
     } 
    }); 
}); 

$('#ddlCountry').val(data.CountryID).trigger('change'); 
$('#ddlState').val(data.StateID).trigger('change'); 

Wie kann ich das stoppen?

+0

Können Sie Code dieser zwei Funktionen buchen: 'getStateDetails' und' getCityDetails' –

+0

Auch warum sind Ihre Aufrufe von .val & .trigger im Bereit-Block nicht? –

Antwort

1

ich glaube, Sie Daten Variablenwert immer in getStateDetails und getCityDetails Funktionen werden würde, und so folgenden zwei Zeilen jedes Mal neue Werte erhalten:

$('#ddlCountry').val(data.CountryID).trigger('change'); 
$('#ddlState').val(data.StateID).trigger('change'); 

Und sie auslösen change Ereignis dann. Und noch einmal, wenn Sie wirklich einen Wert aus diesem Dropdown auswählen, löst das jquery change-Ereignis die oben erwähnten Funktionen aus und ruft sie auf, und dann geht der Zyklus weiter und weiter.

Um Wert der ausgewählten Option von Dropdown-Listen übergeben Sie wie dieser Code:

$('#ddlCountry').on('change', function() { 
    if ($('#ddlCountry option:selected').index() > 0) { 
     getStateDetails($(this).val()); 
    } 
}); 
$('#ddlState').on('change', function() {     
    if ($('#ddlState option:selected').index() > 0) { 
     getCityDetails($(this).val()); 
    } 
}); 

Pass ihren Wert als Argument in den Funktionen.

+0

https://jsfiddle.net/npathak56/bpvaz614/ Hier meine alle Methoden –

+0

Überprüfen Sie JSfiddle jetzt. –

+0

Entfernen Sie diese beiden Zeilen und wiederkehrende Ereignisse werden gestoppt. $ ('# ddlCountry'). Val (data.CountryID) .trigger ('change'); $ ('# ddlState'). Val (data.StateID) .trigger ('change'); –

0

Allgemeinen während continiously das Auslösen wir folgende verwenden können, um es zu vermeiden.

  1. Verwenden Sie aus() und() in einer einzigen Anweisung (dh .off() auf (function() {})).
  2. Verschieben Sie den Javascript oder Jquery-Code zu andere js-Datei.

Hoffe, das hilft!

Verwandte Themen