私のフォームにはユーザーの国を尋ねるリスト ボックスがありますが、ボックスにユーザーの国が表示されていない場合にのみ、AJAX 呼び出しを介してリスト ボックスにデータを入力したいと考えています。最初は、リスト ボックスには国が 1 つだけ含まれています。この国は、サーバーでの ip-to-country ルックアップから返されます。
リスト ボックスの既定のアクションは、イベント アクションの前に発生するようです。ユーザーがリストボックスをクリックすると、ボックスが開く前にサーバーから取り出された国がボックスに事前に入力されるように、最初にアクションを実行したいと思います。
提案をありがとう。
$().ready(function() {
$('select#selCountry').one('click', function() {
var selCountry = $('select#selCountry');
var selected = $(selCountry).val();
selCountry.html('<option value="">Loading...</option>');
$.getJSON('/AjaxHelpers/CountryList', function(data) {
if (data.length) {
var options = '';
for (var i = 0; i < data.length; i++) {
var key = data[i].Key;
var val = data[i].Value;
options += '<option value="' + key + '"';
if (key == selected) {
options += ' selected="selected"';
}
options += '>' + val + '</option>';
}
selCountry.html(options);
}
else {
selCountry.html('<option value="">Failed.</option>');
}
});
});
});
HTML:
<div>
<select id="selCountry" name="CountryCode"><option value="GB">United Kingdom</option>