【发布时间】:2023-04-09 10:57:01
【问题描述】:
我有 2 个下拉列表,一个带有国家列表,一个带有州列表。当有人点击一个国家/地区时,状态下拉菜单会更改以反映该国家/地区的下拉菜单。
国家下拉菜单是这样的:
<select name="country" id="country" onChange = "states_dropdown(this, 0)">
<option value="001" >United States</option>
<option value="002" >Canada</option>
<option value="003" >Mexico</option>
</select>
还有这样的州/省:
<select name="state" id="state">
<option value="00101" >Alabama</option>
<option value="00102" >Alaska</option>
<option value="00103" >Arizona</option>
</select>
显然,当有人更改国家/地区时,州会发生变化,使用以下代码:
function state_box(country, user_id) {
var xmlHttp = GetXmlHttpObject();
if (xmlHttp == null) {
alert("Browser does not support HTTP Request");
return;
}
var url = relative_path + 'ajax/states.php';
var action = url + '?country_id=' + country.value;
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
document.getElementById('state').innerHTML = xmlHttp.responseText;
}
};
xmlHttp.open("GET", action, true);
xmlHttp.send(null);
}
这一切都很好,但实际的问题是,当服务器处理请求时,当前选择或默认国家的状态仍然可见。因此,如果有人点击得非常快,他可以选择墨西哥作为国家,阿拉巴马州作为州。
加载状态的 ajax/jquery 脚本 states.php 只返回选项值,仅此而已。
有没有办法让它在加载时显示:
<option value="">Please wait</option>
甚至可能将整个框设为“禁用”以防止有人选择它?
【问题讨论】:
-
你试过
document.getElementById('state').innerHTML = '<option value="">Please wait</option>'; -
不会阻止 xmlHttp.responseText 显示吗?
-
在进行 ajax 调用之前你会这样做。
-
确实有效!如果你做出回答,我会接受它:) 有什么办法让它也被禁用吗?如果可能的话……
标签: javascript jquery ajax xml