我创建了3个选择表单,其值应根据第一个选择而改变。例如,选择该国家/地区以及该国家/地区的州。选择州和城市显示。但我发现的现实是,当我测试这段代码时,状态在国家变化时会发生变化。但是,当州改变时,城市无法填充任何东西。但是,如果我选择在状态中设置默认值并首先更改它,则会生成城市。但是,当我从国家开始,然后国家,城市将失败。以下是代码:我不知道出了什么问题。
<script type="text/javascript">
$(document).ready(function(){
$("select.country_id").change(function(){
var selectedCountry = $(".country_id option:selected").val();
$.ajax({
type: "POST",
url: "location_state_processor.php",
data: { country_id : selectedCountry }
}).done(function(data){
$("#responsestate").html(data);
});
});
$("select.state_id").change(function(){
var selectedState = $(".state_id option:selected").val();
$.ajax({
type: "POST",
url: "location_city_processor.php",
data: { state_id : selectedState }
}).done(function(data){
$("#responsecity").html(data);
});
});
});
</script>
<div id="responsecountry">
<select name="country_id" class="country_id select" title="Select Country"><option value="0">Select Country</option><option value="1">Afghanistan</option><option value="2">Albania</option>
<option value="3">Algeria</option>
<option value="4">American Samoa</option>
<option value="5">Andorra</option><option value="6">Angola</option>
<option value="7">Anguilla</option>
<option value="8">Antarctica</option>
</select></div>
<div id="responsestate"><select class="state_id select" name="state_id">
<option value="0">--Select State--</option><option value="5303">Barisal</option><option value="1161">Chittagong</option><option value="1162">Dhaka</option><option value="1163">Khulna</option><option value="1164">Rajshahi</option><option value="5304">Sylhet</option></select></div>
<div id="responsecity"><select class="city_id select" name="city_id">
<option value="0">--Select City--</option>
<option value="19081">Ackley</option>
<option value="19082">Ackworth</option>
<option value="18035">Adair</option>
<option value="19131">Adel</option>
</select></div>
答案 0 :(得分:0)
尝试以下代码:
<div id="responsestate"><select class="state_id select" name="state_id" onchange="fetchCities(this)">
<option value="0">--Select State--</option>
<option value="5303">Barisal</option>
<option value="1161">
Chittagong
</option>
<option value="1162">Dhaka</option>
<option value="1163">Khulna</option>
<option value="1164">Rajshahi</option>
<option value="5304">Sylhet</option>
</select></div>
function fetchCities(ele){
state_id = $(ele).val();
$.ajax({
type: "POST",
url: "location_city_processor.php",
data: { state_id : selectedState };
success: function(responseData, textStatus, jqXHR) {
results = responseData.results;
$("#responsecity").html(data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR, errorThrown);
}
});
}
答案 1 :(得分:0)
我曾遇到过类似的问题。 虽然我使用的是angularjs。 问题来了,因为你用html绑定了响应。 您最好在控制器中编写此更改函数,并将响应存储在某个数组中。 然后在html选项select中迭代数组。 为了获得城市,也会遵循同样的原则。