首先,我有一个必须选择所有选项值的数组,例如
$require=array('volvo','saab');
然后,
我有x个选择框,x是一个小于或等于的数字 期权数量
然后我有选择框,例如
<select name ="car" id="0">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<select name ="car" id="1">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<select name ="car" id="2">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
在这种情况下,我需要检查:
1)没有重复的选择值
2)数组中的值必须只选一个。
我可以在选择框中弄清楚unqiue值的检查,但第二个条件怎么样?
谢谢
Using the above case as an example
id = 0 , value = volvo
id = 1 , value = Mercedes
id = 2 , value = Audi
Not valid
id = 0 , value = saab
id = 1 , value = Audi
id = 2 , value = volvo
valid
答案 0 :(得分:2)
第一个建议,请不要为多个HTML元素使用相同的名称,其无效的HTML。 如果您只是为选择器目的而做,请改为使用class属性。
我采用了“分而治之”的方法,它没有得到很好的优化,但它确实有效。
好吧,我尝试将您的解决方案分为两步:
第1步:检查唯一性
//val is the array of values from each select box
function checkUnique(val){
var cnt = val.length;
for(i = 0; i < cnt; i++){
for(j = i+1; j < cnt; j++){
if(val[i] == val[j]){
return false;
}
}
}
return true;
}
步骤2:检查验证所需的值
// array of required values:
var required = ['saab', 'volvo'];
function validate(){
var val = [];
$("select[name=car]").each(function(){
val.push(this.value);
});
if(checkUnique(val)){
var cnt = required.length;
var cnt2 = val.length;
for(k = 0; k < cnt; k++){
var flag = false;
for(l = 0; l < cnt2; l++){
if(required[k] == val[l]){
flag = true;
}
}
if(flag){
return true;
}
}
}else{
return false;
}
}
我在文档加载和selectbox更改事件的所有事件上调用validate函数:
function showMsg(){
var msg = (validate())?'OK':'NOT OK';
// added html DIV tag with id="result" to show the status on change events
$("#result").html(msg);
}
$(document).ready(function(){
showMsg();
});
$("select[name=car]").change(function () {
showMsg();
});
您可以在jsfiddle上查看完整示例: http://jsfiddle.net/LCxJw/
答案 1 :(得分:1)
这是jQuery方式:
$('select[name=car]').change(function () {
var id = $(this).attr('id');
var selected = $(this).val();
console.log( id + ' ' + selected );
$('select[name=car] option').each(function () {
$(this).removeAttr('selected');
});
$('#'+id).find('option[value='+selected+']').attr('selected', 'selected');
});
我建议您使用第一个选项开始您的选择:
<option>Select</option>