我有两个选择,第一个是visibile,用户可以选择一个选项 第二个选择是隐藏的,我需要根据第一个选择设置一个值。
第二个选择已经填充,我需要选择一个选项。
我们假设我有这个:
<li class="select-province-form">
<select name="select1">
<option value="A">AA</option>
<option value="B">BB</option>
<option value="C">CC</option>
</select>
</li>
这是第二个:
<li class="select-regioni-form">
<select name="select2">
<option value="AA">AAAA</option>
<option value="BB">BBBB</option>
<option value="CC">CCCC</option>
</select>
</li>
现在我有了这段代码:
$(document.body).on('change',"li.select-province-form select",function (e) {
var regione = '';
var selectedProv = this.value;
$.each( SpElencoRegioni[0], function( key, val ) {
if(key == selectedProv){
regione = val;
$('li.select-regioni-form select').val(regione);
break;
}
});
});
SpElencoRegioni:
var SpElencoRegioni = [{"A":"AA","B":"BB","C":"CC"}];
问题在于,在第二次选择中没有任何事情发生。
答案 0 :(得分:0)
您的脚本中存在语法错误。你不能break
如果你不在一个周期内,而jQuery的each
不是一个循环,它就是一种方法。
要打破它,你应该return false
。
修改强>
在评论中你说它不起作用,但下面的代码段(我刚刚更改了代码的顺序并将我在答案中提到的return false
)有所不同:)< / p>
这不起作用的一些原因是因为您要么没有正确导入jQuery,要么SpElencoRegioni
在回调范围内不可用,或者您的DOM结构没有反映您在JS代码中使用的选择器。请检查。
var SpElencoRegioni = [{"A":"AA","B":"BB","C":"CC"}];
$(document.body).on('change',"li.select-province-form select",function (e) {
var regione = '';
var selectedProv = this.value;
$.each( SpElencoRegioni[0], function( key, val ) {
if(key == selectedProv){
regione = val;
$('li.select-regioni-form select').val(regione);
return false;
}
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li class="select-province-form">
<select name="select1">
<option value="A">AA</option>
<option value="B">BB</option>
<option value="C">CC</option>
</select>
</li>
<li class="select-regioni-form">
<select name="select2">
<option value="AA">AAAA</option>
<option value="BB">BBBB</option>
<option value="CC">CCCC</option>
</select>
</li>
&#13;