我要做一个调查问卷,每个问题用单选按钮选择。
现在问题是提交后如果哪一题未填写或者填写不规范,需要提示弹出文字如“不能为空,请检查!”,同时没有填写的地方背景颜色变为黄色。而且之前选择的没有清空不用再去点了。
js代码:<script language="javascript">
<!--function myCheck(n)
   {
     var RadioGroupName;
  var t;
  var flag;
  
  for(var i=1; i<=n; i++)
  {
      flag=false;
      t="t"+i;
      RadioGroupName=document.getElementsByName(t)
     for(var j=0; j<RadioGroupName.length; j++) 
          {
                  if(RadioGroupName[j].checked)
                 {                        flag=true;
                       break;
                  }
          }  
   }
    if(flag==false)
    {
      alert("对不起,不能为空,请检查!");
   document.getElementById(t1).className = "list_b";
  return false;
    } 

   }
    
-->        </script>html代码:<div class="feature"> <form action="" method="get" id="zl" name="zl"> <div class="tip-2"> </div>
<!--go-->
<div class="tip-3">
1、您的性别 </div>
<div class="list_a" id="w1">
   <ul >
   <li>
   <input name="t1" type="radio" value="男" >
   A.
     男</li>
   <li>
     <input type="radio" name="t1" value="女">
     B. 
     女</li>
  </ul>
</div>

<div class="tip-3">
2、您的年龄 </div>
<div class="list_a" id="w2">
   <ul >
   <li>
     <input type="radio" name="t2" value="radiobutton">
     A.      18岁以下</li>
   <li>
     <input type="radio" name="t2" value="radiobutton">
     B.          18岁-25岁</li>
   <li>
     <input type="radio" name="t2" value="radiobutton">
     C.      25岁-35岁</li>
   <li>
     <input type="radio" name="t2" value="radiobutton">
     D.      35岁--45岁</li>
 <li>
     <input type="radio" name="t2" value="radiobutton">
     E.      45岁--55岁</li>
 <li>
     <input type="radio" name="t2" value="radiobutton">
     F.      55岁以上</li>
  </ul>
</div><div class="menu_a"> 
    <input name=""  type="image" src="images/btn_dl.png" onclick="return myCheck(2)"></div>
  </div>
</form>
</div>
            

解决方案 »

  1.   

    没有提示的时候当前层的样式为list_a
    提示黄色背景的代码list_b
    多谢  我已经搞了一天了  没头绪
      

  2.   

    function myCheck(n) {
    var FLAG = false;
    for (var i = 1; i <= n; i ++) {
    var obj = document.getElementsByName('t' + i);
    var isChecked = false;
    for (var j = 0; j < obj.length; j ++) {
    if (obj[j].checked) {
    FLAG = true;
    isChecked = true;
    break;
    }
    }
    if (!isChecked) document.getElementById('w' + i).className = 'list_b';
    }
    if (!FLAG) {
    alert('对不起,不能为空,请检查!');
    return false;
    }
    else return true;
    }
      

  3.   

    function check(n){
    var o_b=false;
    var obj = document.getElementsByName('t' + n);
    for(var i=0;i<obj.length;i++){
    if (obj[i].checked) {
                    o_b = true;
                    break;
    }
    }
    return o_b;
    }
    function myCheck(n) {
    var back=true;
    for(var i=1;i<=n;i++){
    if(!check(i)){
    document.getElementById('w' + i).style.backgroundColor="yellow";
    back=false;
    }
    }
    if(!back){
    return false;
    alert('对不起,不能为空,请检查!');
    }else{
    alert("正常提交!");
    }
    }
      

  4.   

    3楼的虽然可以提示,如果这两个input 其中一个不是空则不会提示了。
    还有,出现提示后并给没有填写的地方加上焦点怎么做?
      

  5.   

    4楼为空不提示 alert('对不起,不能为空,请检查!');
    而且其中一个不为空则直接提交成功了,我对这个是门外汉。
    请大家帮忙想想办法
      

  6.   

    好吧,改进一下。
    function myCheck(n) {
    var counter = 0; //用于保存已选择的单选组的数量
    for (var i = 1; i <= n; i ++) document.getElementById('w' + i).className = '';

    for (var i = 1; i <=n; i ++) {
    var obj = document.getElementsByName('t' + i);
    var isChecked = false;
    for (var j = 0; j < obj.length; j ++) {
    if (obj[j].checked) {
    counter += 1;
    isChecked = true;
    break;
    }
    }
    if (!isChecked) document.getElementById('w' + i).className = 'list_b';
    }
    if (counter < n) {
    alert('对不起,不能为空,请检查!');
    return false;
    }
    else return true;
    }
      

  7.   

    不好意思这两行顺序反了!            alert('对不起,不能为空,请检查!');
                return false;