如图,默认两个下拉框都是显示请选择,想要的效果是我两个都选择之后,当我更换上面的公司,下面的批次号显示出来的自动变成请选择,剩下的里面可选择项已经通过ajax改变了,这个没问题。试了好几种方法都行不通。代码如下:
$("select[name='companyId']").click(function(){
var str = $(this).val();
$("select[name='batchId']").empty();
$.ajax({
type:"post",
url:"${ctx}/operating/process/operatingProcessMachining/getBatchIdByCompanyId",
data:{companyId:str},
dataType:"json",
success:function(obj){
for(var i=0;i<obj.length;i++){
$("select[name='batchId']").append("<option value="+obj[i]+" name="+obj[i]+">"+obj[i]+"</option>");
}
}
});
});
});
<div class="control-group">
<label class="control-label">进场批次号:</label>
<div class="controls">
<form:select path="batchId" class="input-xxlarge required" style="width:285px">
<form:option value="" label="请选择" selected="selected"/>
</form:select>
<span class="help-inline"><font color="red">*</font> </span>
</div>
</div>
for(var i=0;i<obj.length;i++){
$("select[name='batchId']").append("<option value="+obj[i]+" name="+obj[i]+">"+obj[i]+"</option>");
}
这里只有添加下拉的逻辑,没有设置选择的逻辑,下面加上
$("select[name='batchId']").value="你要选择的那条的value";
把$("select[name='batchId']").empty(); 换成$("select[name='batchId']").val("请选择"); 正确逻辑应该是刚进页面的时候只允许选择公司,不允许选择批次,当公司选择了后,批次就可以选择。当然你不这么用也行。
我说的方法就是每次点击选择公司的时候就把批次赋值请选择。
增加一个option为“请选择”默认选中应该可以吧
试试这样:
第一段代码
$("select[name='companyId']").change(function(){
var str = $(this).val();
$("select[name='batchId']").empty();
$("select[name='batchId']").append("<option value=''>请选择</option>"); //为Select插入一个Option(第一个位置)
$.ajax({
type:"post",
url:"${ctx}/operating/process/operatingProcessMachining/getBatchIdByCompanyId",
data:{companyId:str},
dataType:"json",
success:function(obj){
for(var i=0;i<obj.length;i++){
$("select[name='batchId']").append("<option value="+obj[i]+" name="+obj[i]+">"+obj[i]+"</option>");
}
$("select[name='batchId']").get(0).selectedIndex = 0; //选择了Option第一项
}
});
});
把你列出的第二段代码的option去掉。