我正在创建一个页面,我的网站的用户可以在其中编辑他们创建的列表。列表分为三个类别,每个类别都有自己的子类别。我使用 AJAX 根据选择的类别动态加载子类别。由于这是一个编辑页面,因此必须预设每个字段的值,以便用户可以根据需要更改它们。该类别加载良好,子类别也是如此。但是,我在将子类别选择框的值设置为列表的子类别值时遇到了问题。
这是加载子类别的函数:
function loadEditSubcats(){
$('#edit-subcategory').empty();
var cat = $('#category-hidden').val();
var postData = { category : cat };
$.post("/assets/scripts/fetch_subcats.php",
postData,
function(data, text, jqxhr) {
$.each(data, function(key, val){
$('#edit-subcategory').append('<option value="' + val + '">' + val + '</option>');
});
},
'json'
).fail(
function( jqXHR, textStatus, errorThrown ) {
alert(errorThrown);
}
);
}
这是我在页面加载时加载子类别的位置,并尝试预设子类别的值:
$(document).ready(function () {
loadEditSubcats();
$("#edit-subcategory").val($('#subcat-hidden').val());
});
最后,这是子类别的选择框,以及包含初始子类别的隐藏值:
<input type="hidden" id="subcat-hidden" value="<?=$item->subcategory?>">
<div class="form-group col-md-6">
<label id="name-label"><h3>Subcategory</h3></label><br>
<span "dropdown-menu-right">
<select class="form-control" id="edit-subcategory"></select>
</span>
</div>
我认为,AJAX 可能是异步加载的,并且在设置值时,子类别实际上并未加载。任何见解都将不胜感激!谢谢!
最佳答案
您可以像下面这样改变您的方法来完成这项工作
$.ajax({
type: "POST",
url: "/assets/scripts/fetch_subcats.php",
data: postData,
success: function(data){
$.each(data, function(key, val){
$('#edit-subcategory').append('<option value="' + val + '">' + val + '</option>');
});
//Do this in success function
$("#edit-subcategory").val($('#subcat-hidden').val());
},
dataType: json
});
关于javascript - 未设置选择框的 JQuery 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24832019/