<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
  
  <script Language="javascript"> 
    function checkedThis(obj){ 
       var boxArray = document.getElementsByName('test'); 
       for(var i=0;i<=boxArray.length-1;i++){ 
            if(boxArray[i]==obj && obj.checked){ 
               boxArray[i].checked = true; 
            }else{ 
               boxArray[i].checked = false; 
            } 
       } 
    }  </script>
 </HEAD> <BODY>
<input type="checkbox" name="test" onclick="checkedThis(this);">男
<input type="checkbox" name="test" onclick="checkedThis(this);">女
 
 </BODY>
</HTML>这样只能选一个,但是也可以一个都不选,想让他完全变成单选那样的功能能,怎么做?

解决方案 »

  1.   

    你的意思是初试有一个被选中?<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
       
      <script Language="javascript">  
      function checkedThis(obj){  
      var boxArray = document.getElementsByName('test');  
      for(var i=0;i<=boxArray.length-1;i++){  
      if(boxArray[i]==obj && obj.checked){  
      boxArray[i].checked = true;  
      }else{  
      boxArray[i].checked = false;  
      }  
      }  
      }   </script>
     </HEAD> <BODY>
    <input type="checkbox" name="test" onclick="checkedThis(this);" checked>男
    <input type="checkbox" name="test" onclick="checkedThis(this);">女
      
     </BODY>
    </HTML>
      

  2.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <meta http-equiv='content-type' content='text/html;charset=utf-8' />
       
      <script type="text/javascript">  
      function checkedThis(obj,ev){ ev = ev || window.event;  var chkElems = document.getElementsByName('test');  
      
    if(obj.getAttribute("_checked")) {
    ev.returnValue = false;
    return;
    } else {
    obj.setAttribute("_checked", true);
    }

    for(var i=0,len=chkElems.length;i<len;i++) {
    if(chkElems[i] != obj) {
    chkElems[i].checked = false;
    chkElems[i].removeAttribute('_checked');
    }
    }  }   </script>
     </HEAD> <BODY>
    <input type="checkbox" name="test" onclick="checkedThis(this,event);">男
    <input type="checkbox" name="test" onclick="checkedThis(this,event);">女
      
     </BODY>
    </HTML>用一个属性或是变量记录一下就可以了,点击的时候进行判断
      

  3.   

    把ev.returnValue改成下面的:
    if(ev.preventDefault) {
    ev.preventDefault();
    } else {
    ev.returnValue = false;
    } 因为需要兼容IE与其它浏览器IE和Chrome、Safari使用returnValue可以 但FF不行 需要使用preventDefault
      

  4.   

    弄了个很笨的方法,如下:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
       
      <script Language="javascript">  
      function checkedThis(obj){
      var boxArray = document.getElementsByName('test');  
      for(var i=0;i<=boxArray.length-1;i++){  
      if(boxArray[i]==obj && obj.checked){  
    boxArray[i].checked = true;  
      }else{
      for(var j=0;j<=boxArray.length-1;j++){  
      if(boxArray[j]!=obj && boxArray[j].checked){
    boxArray[i].checked = false;  
      }else{
    obj.checked = true;
      }
      }
      }  
      }  
      }   </script>
     </HEAD> <BODY>
    <input type="checkbox" name="test" onclick="checkedThis(this);" checked>男
    <input type="checkbox" name="test" onclick="checkedThis(this);">女
      
     </BODY>
    </HTML>
      

  5.   

    非常感谢楼上的两位
    你们两个的JS为什么放到JSP里,用tomcat访问不好使啊?
    我用的是IE8 
    直接用拷贝的html里好使
    为什么?
      

  6.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
       
      <script Language="javascript">  
      function checkedThis(obj){  
      var boxArray = document.getElementsByName('test');  
      for(var i=0;i< boxArray.length; i++){  
      if(boxArray[i].checked){  
       boxArray[i].checked = false;  
      }
      }
      obj.checked = true;  
      }   </script>
     </HEAD> <BODY>
    <input type="checkbox" name="test" onclick="checkedThis(this)" checked="checked">男
    <input type="checkbox" name="test" onclick="checkedThis(this)">女
     </BODY>
    </HTML>
    这样应该可以了
      

  7.   

    <input type="checkbox" name="test" onclick="checkedThis(this);" checked>男默认是 男 就行了,
      

  8.   

    function checkedThis(obj)
    {
      if(!obj.checked)
      {
        obj.checked=true;
        return;
      }  var boxArray = document.getElementsByName('test');   
      for(var i=0;i<=boxArray.length-1;i++)
      {   
        if(boxArray[i]==obj && obj.checked)
        {   
          boxArray[i].checked = true;   
        }
        else
        {   
          boxArray[i].checked = false;   
        }   
      }   
    }   
    为什么不用radio?
      

  9.   

    保存一个中间变量,存储上次check的节点就行了.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
      
      <script Language="javascript"> 
    (function(){
      var prevChked = {};
      function checkedThis(obj){ 
    prevChked.checked = false;
    prevChked  = obj;
      }
      window['checkedThis'] = checkedThis;
    })()
     </script>
     </HEAD> <BODY>
    <input type="checkbox" name="test" onclick="checkedThis(this);">男
    <input type="checkbox" name="test" onclick="checkedThis(this);">女
     <input type="checkbox" name="test" onclick="checkedThis(this);">女
     <input type="checkbox" name="test" onclick="checkedThis(this);">女
     <input type="checkbox" name="test" onclick="checkedThis(this);">女
     <input type="checkbox" name="test" onclick="checkedThis(this);">女
     </BODY>
    </HTML>
      

  10.   

    有明显bug.改一下<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
      
      <script Language="javascript"> 
    (function(){
      var prevChked;
      function checkedThis(obj){ 
       if(prevChked){
    prevChked.checked = false;
       }
    prevChked  = obj;
      }
      window['checkedThis'] = checkedThis;
    })()
     </script>
     </HEAD> <BODY>
    <input type="checkbox" name="test" onclick="checkedThis(this);">男
    <input type="checkbox" name="test" onclick="checkedThis(this);">女
     <input type="checkbox" name="test" onclick="checkedThis(this);">女
     <input type="checkbox" name="test" onclick="checkedThis(this);">女
     <input type="checkbox" name="test" onclick="checkedThis(this);">女
     <input type="checkbox" name="test" onclick="checkedThis(this);">女
     </BODY>
    </HTML>
      

  11.   


    <c:if test="${node.ACTIVE=='1'}">
    <input type="checkbox" name="ACTIVE" onclick="checkedThis(this);" checked="checked" value="1">活动
    <input type="checkbox" name="ACTIVE" onclick="checkedThis(this);" value="0" >关闭
     </c:if>
     
     <c:if test="${node.ACTIVE=='0'}">
    <input type="checkbox" name="ACTIVE" onclick="checkedThis(this); value="1" >活动
    <input type="checkbox" name="ACTIVE" onclick="checkedThis(this);" checked="checked" value="0">关闭
     </c:if>我放到这里的,就是不好使啊。
    为什么?
    跟JSTL标签没关系吧
      

  12.   

    能不能光标移动到下一个input的时候就提示啊?不点提交就出来
    看到网上有很多,验证正确或是错误input左边出现对号或是差
    那是怎么做的?