我正在使用动态选择框,并且正在使用 JS/Jquery 更新每个选择框的值。由于我是从 MySQL 表中提取值,因此有时需要更长的时间来加载带有其值的选择框。我搜索的一种解决方案是使用 ajax 加载器。
如何放置一个 ajax 加载器(就在 updateSelectBox.js 中的 jQuery.getJSON 之前),以便在第一个选项卡上加载时无法单击任何内容,并在成功处理后将其删除(在同一文件中)?或任何更好的解决方案?这是一个示例
更新选择框.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>