事前定義された値を取得しています。これを 2 つの選択に挿入する必要があります。
<div id="wrapper">
<select id="first">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select id="second"></select>
</div>
内のオプション#second
は、 で選択した値によって異なります#first
。このオプションは ajax 経由でロードされます。
$('#first').change( function() {
$.ajax({
url: "giveMeValues.phpOrWhatever"
}).done(function() {
// just simulating data from ajax call
$('#second').append(
'<option value="a">a</option>'+
'<option value="b">b</option>'+
'<option value="c">c</option>'
);
});
});
問題は、 ajax データが読み込まれた#second
後に値を設定できることです。したがって、次のコードはもちろん機能しません。
$('#first').val('2').change();
$('#second').val('b').change();
だから私はハンドラー.promise()
内のajax呼び出しが完了するまで待つために使用しようとしました:change
$('#first').val('2').change();
$('#wrapper').promise().then( function() {
$('#second').val('b');
console.log('setting value...');
});
しかし、うまくいきません。私の質問は: ajax 呼び出しの終了を待ってから#second
値を設定するにはどうすればよいですか?
ここで、この問題のフィドルがあります:http://jsfiddle.net/W2nVd/
御時間ありがとうございます。