Javascript 是否选择了第一个选项上的jQuery错误?
我使用Javascript 是否选择了第一个选项上的jQuery错误?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我使用Select2插件时遇到了奇怪的情况: 当,#state更改时,它将执行ajax请求以获取城市的列表。一旦选择了#城市,它将执行ajax请求以获取#区域列表 如果我选择城市选项2、3等。。。它将触发#area以获取列表。但如果我选择第一个选项,就不会发生任何事情 但有一次,我选择了第2、3等选项。。。然后返回选择选项1,它将完美地运行ajax 图1:Badung(选项#1)第一次被选中,没有触发AJAX获取#区域 图2:Bangli(选项#2)被选中,它触发AJAX获取#区域 图3:回
Select2
插件时遇到了奇怪的情况:
当,#state
更改时,它将执行ajax请求以获取城市的列表。一旦选择了#城市
,它将执行ajax请求以获取#区域
列表
如果我选择城市选项2、3等。。。它将触发#area
以获取列表。但如果我选择第一个选项,就不会发生任何事情
但有一次,我选择了第2、3等选项。。。然后返回选择选项1,它将完美地运行ajax
图1:Badung(选项#1)第一次被选中,没有触发AJAX获取#区域
图2:Bangli(选项#2)被选中,它触发AJAX获取#区域
图3:回到巴东(选项1),现在它触发AJAX获取#区域
以下是我的HTML结构:
<div class="row">
<div class="col-sm-12">
<div class="form-group form-group-default form-group-default-select2 required">
<label class="">State</label>
<select id="state" class="full-width" data-init-plugin="select2" name="state">
<option select="selected"></option>
<?
for ($i = 0; $i < $num_propinsi; $i++) {
$value = $propinsi[$i]['province_id'];
$text = $propinsi[$i]['province'];
echo '<option value="'.$value.'">'.$text.'</option>';
}
?>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group form-group-default form-group-default-select2 required">
<label>City</label>
<select id="city" class="full-width" data-init-plugin="select2" name="city" disabled>
</select>
</div>
</div>
<div class="col-sm-6">
<div class="form-group form-group-default form-group-default-select2 required">
<label>Area</label>
<select id="area" class="full-width" data-init-plugin="select2" name="area" disabled>
</select>
</div>
</div>
</div>
陈述
城市
地区
下面是我的jquery:
<script>
$(function() {
$("#form-flogin").validate();
$("#state").change(function() {
$("#city").html("");
$("#s2id_city").find("#select2-chosen-2").html("");
$("#s2id_area").find("#select2-chosen-3").html("");
$("#area").prop("disabled", true);
$("#flogin-submit").prop("disabled", true);
var propinsi = $("#state").val();
$.ajax({
url: "controller/ctrl.getcityarea.php?req=city&val="+propinsi,
dataType: "JSON",
success: function(json){
var city = "";
$.each(json, function(i,o){
city += "<option value="+o.id+">"+o.city_name+"</option>";
});
$("#city").append(city);
event.preventDefault();
$("#city").prop("disabled", false);
}
})
});
$("#city").change(function() {
$("#area").html("");
$("#s2id_area").find("#select2-chosen-3").html("");
var city = $("#city").val();
$.ajax({
url: "controller/ctrl.getcityarea.php?req=area&val="+city,
dataType: "JSON",
success: function(json){
var area = "";
$.each(json.rajaongkir.results, function(i,o){
area += "<option value="+o.subdistrict_id+">"+o.subdistrict_name+"</option>";
});
$("#area").append(area);
event.preventDefault();
$("#area").prop("disabled", false);
}
});
});
$("#area").change(function() {
event.preventDefault();
$("#flogin-submit").prop("disabled", false);
});
})
</script>
$(函数(){
$(“#form flogin”).validate();
$(“#状态”).change(函数(){
$(“#城市”).html(“”);
$(“#s2id_city”).find(“#select2-selected-2”).html(“”);
$(“#s2id_区域”).find(#select2-selected-3”).html(“”);
$(“#面积”).prop(“禁用”,真);
$(“#flogin submit”).prop(“disabled”,true);
var propinsi=$(“#state”).val();
$.ajax({
url:“controller/ctrl.getcityrea.php?req=city&val=“+propensi,
数据类型:“JSON”,
成功:函数(json){
var city=“”;
$.each(json,函数(i,o){
城市+=“”+o.city_name+“”;
});
$(“#城市”)。追加(城市);
event.preventDefault();
$(“#城市”).prop(“残疾”,假);
}
})
});
$(“#城市”).change(function(){
$(“#面积”).html(“”);
$(“#s2id_区域”).find(#select2-selected-3”).html(“”);
var city=$(“#city”).val();
$.ajax({
url:“controller/ctrl.getcityrea.php?req=area&val=“+city,
数据类型:“JSON”,
成功:函数(json){
var区域=”;
$.each(json.rajaongkir.results,function(i,o){
面积+=“”+o.分区名称+“”;
});
$(“面积”)。追加(面积);
event.preventDefault();
$(“#面积”).prop(“禁用”,假);
}
});
});
$(“#面积”).更改(函数(){
event.preventDefault();
$(“#flogin submit”).prop(“disabled”,false);
});
})
知道为什么第一次尝试时
.change
方法不起作用吗?但在下一次尝试中起作用。感谢您的帮助这是因为您已经为城市编写了一个更改事件侦听器下拉列表,并且默认选择了第一个城市,因此当您再次选择它时,它不会更改值,因此更改事件侦听器不会被触发
您可以执行以下两个选项之一
选项1:将额外选项设置为“选择城市”,然后选择您选择的第一个城市
$("#city").append("<option value=''>Select City</option>");
$("#city").append(city);
小字体
此处选择应选择@伊兹穆克希7:谢谢你的信息,兄弟。但这不是问题的原因。两种选择都有效,兄弟。谢谢。但是我喜欢第二个。因为它没有其他选项可供选择。很高兴帮助您:)
$("#city").append(city).change();