已更新 我有2个下拉菜单(输入选择)-一个用于国家(#label-country ),另一个-用于州(#label-state )。 用户选择国家/地区后,状态列表就会更改。 一旦选择了国家,以下代码将更改州列表:
$('#label-country').change(function() {
var countryinput = $('#label-country').val();
$.post('func/region.php', {countryinput:countryinput}, function(states) {
$('#label-state option').remove();
$('#label-state').append(states);
});
});
如果用户手动选择国家/地区,然后为该国家/地区声明状态,则效果很好。 但是在某些情况下,我希望能够预先选择国家和州。
我发现以下代码不起作用-根据需要选择了国家/地区,但指定了状态-
$('#label-country').val('US').trigger('change');
$('#label-state').val('Alaska');
我想到的流程:
$('#label-country')。val('US')
.trigger('change')
$('#label-country')。val('阿拉斯加')
最后我有:
国家被选中
状态列表已更改
未选择状态
我在变更功能和状态选择的顺序中缺少某些东西吗?
答案 0 :(得分:0)
$('#label-country').val('US').trigger('change');
触发一个事件,该事件具有异步ajax发布功能,这正是导致问题的确切原因。
直到ajax .done()
函数被触发,您的下一行$('#label-state').val('Alaska');
已经被调用,到发生时,您的$('#label-state')
还没有值,以证明这样,您可以使用for循环记录其值。
因此,在这种情况下,您需要做的只是放置
if(countryInput=="US") $('#label-state').val('Alaska');
放在$.post
函数中,然后删除$('#label-country').val('US').trigger('change');
。