0

名前と同じIDの3つの選択ボックスstate、city、localityがあります

$(document).ready(function() {
    $("#state").on('change',function(){
        var state = $("#state").attr('value');
        $("#city").load('http://localhost/trial/index.php/new/view_cities/'+state).change();
    }).change();

    $("#city").on('change',function(){
        var city = $("#city").attr('value');
        $("#locality").load('http://localhost/trial/index.php/new/view_localities/'+city);
    }).change();
});

ページの読み込み状態はデータベースから直接取得されるため正しく表示され、都市のオプションは自動的に更新されますが、地域は更新されません。そして、私が都市を変えるとき、地域は変わることができます。

4

1 に答える 1

0

この関数は、非同期.load()の呼び出しの単なるラッパーです。$.ajax()その呼び出しの結果として要素に読み込まれた要素と対話しようとしている場合は、AJAX 要求が成功した応答を返したときに実行されるコールバック関数を渡す必要があります。

置き換えてみてください:

$("#city").load('http://localhost/trial/index.php/new/view_cities/'+state).change();

$("#city").load('http://localhost/trial/index.php/new/view_cities/'+state, 
function() {
    $("#city").change();
});

そして、いくつかの一般的なポイント:

イベントハンドラーの関数内で使用thisして、イベントをトリガーした要素を参照できます。それよりも:

$("#state").on('change',function(){
    var state = $("#state").attr('value');

あなたができる:

$("#state").on('change',function(){
    var state = this.value;

また、jQuery を使用して要素の値を取得する場合は、 ではなく関数を使用.val()ます.attr('value')

于 2012-06-26T14:48:40.613 に答える