私は動的選択ボックスを使用しており、JS/Jquery を使用して各選択ボックスの値を更新しています。MySQL テーブルから値を取得しているため、選択ボックスにその値をロードするのに少し時間がかかることがあります。私が検索する1つの解決策は、ajaxローダーの使用です。
ajax ローダー (updateSelectBox.js の jQuery.getJSON の直前) を配置して、最初のタブでの読み込み中に何もクリックできず、(同じファイル内で) 処理が成功した後にそれを削除するにはどうすればよいですか? またはより良い解決策はありますか?ここに例があります
updateSelectBox.js
var formObject = {
run : function(obj) {
obj.nextAll('.update').attr({'disabled': true, 'hidden':true}).html('<option value="">----</option>');
var id = obj.attr('id');
var v = obj.val();
jQuery.getJSON('mod/postfile.php', { id : id, value : v }, function(data) {
$('.update').removeClass('last');
if (!data.error) {
obj.next('.update').html(data.list).removeAttr('disabled hidden');
} else {
obj.addClass('last').nextAll('.update').attr({'disabled': true, 'hidden':true}).html('<option value="">----</option>');
}
});
}
};
$(function(){
$('.update').live('change', function() {
var str = "";
$("select option:selected").each(function () {
str += $(this).text() + " ";
});
$("#postSelected").text(str);
formObject.run($(this));
});
});
HTML
<select name="gender" id="gender" class="update" size="7">
<option value="">Select one</option>
<?php if (!empty($list)) { ?>
<?php foreach($list as $row) { ?>
<option value="<?php echo $row['id']; ?>">
<?php echo $row['category_name']; ?>
</option>
<?php } ?>
<?php } ?>
</select>
<select name="category" id="category" class="update" disabled="disabled" hidden="hidden" size="7">
<option value="">----</option>
</select>
<select name="colour" id="colour" class="update" disabled="disabled" hidden="hidden" size="7">
<option value="">----</option>
</select>