为了验证两个下拉列表的选项是否都被选中,就用for循环写了一段代码:
function checkadd(){
for(var i = 1; i < madeAdd.length; i++){
for(var c = 1; c < madeAdd1.length; c++){
if(madeAdd.options[i].selected == true && madeAdd.options[c].selected == true){
return 1;
}
else{
return 2;
}
}
}
}
下面是验证的代码:
if(checkadd() == 2){
alert("请选择籍贯");
return false;
}
可是,没有想要的效果,第二个下拉列表的选项没被选中,表单也可以被提交。找了好久,找不出问题所在。只能请高人帮忙了~~~~~

解决方案 »

  1.   


    if(madeAdd.options[i].selected == true && madeAdd.options[c].selected == true){
    //问题出在这一句.应该改为
    //if(madeAdd.options[i].selected == true && madeAdd1.options[c].selected == true){
      

  2.   

    下面是HTML部分的代码:
    <select name="address" onchange="madeadd()">
    <option value=""></option>
    <option value="hb">湖北</option>
    <option value="hn">湖南</option>
    </select>
    <select name="address1">
    <option value="">&nbsp&nbsp&nbsp&nbsp</option>
    <option></option>
    <option></option>
    <option></option>
    <option></option>
    <option></option>
    <option></option>
    <option></option>
    </select>
    下面是脚本部分的代码:
    var madeAdd = document.forms[0].address;
    var madeAdd1 = document.forms[0].address1;
    function checkadd(){
    for(var i = 1; i < madeAdd.length; i++){
    for(var c = 1; c < madeAdd1.length; c++){
    if(madeAdd.options[i].selected == true && madeAdd.options[c].selected == true){
    return 1;
    }
    else{
    return 2;
    }
    }
    }
    }
    if(checkadd() == 2){
    alert("请选择籍贯");
    return false;
    }
    麻烦看一下,是哪出了问题
      

  3.   

    改了也不对,应该.这种判断不应该用循环吧,窃以为.
    虽然是两层循环,但经过第一次判断后,一定会终止循环.可一次判断只能判断出第一项元素是否被选种.做法是不是应改为这样:下拉默认选中的都是第一项,你判断madeAdd.value是不是等于第一项的value,并madeAdd1.value不等于第一项的value,这样就表示选中了.其他情况没全选中
      

  4.   


    if(madeAdd.value && madeAdd1.value){
    alert('都选中了');
    }else{
    alert('没全选中');
    }
    只在onsubmit事件里判断,或者提交的时候,js判断就可以,不用onchange事件
      

  5.   

    return 表示终止方法,并返回函数调用处.你的两层循环在判断第一次后,会终止这个方法.
    正常情况下.除了第一项,别的项应该都不为空的.所以,可以用if(madeAdd.value && madeAdd1.value){//如果是空的,转换为boolean就是false,用于value不为空字符串的情况.
    alert('都选中了');
    }else{
    alert('没全选中');
    }
    if(madeAdd.options[i].selected == true && madeAdd1.options[c].selected == true){

    if(madeAdd.options[i].selected == true && madeAdd.options[c].selected == true){
    不一样吧.下面一个少了个1