2012-03-30 54 views
0

我有以下代码;我想确保提交不会实际发布到操作指定的页面,除非选择了两个无线电输入之一。我试过了这个和其他代码的多种变体,似乎无法弄清楚什么是错的。无论单选按钮是否被选中,它仍会发送到somepage.py。使用Javascript验证HTML

<html> 
    <head> 
     <title> 
      Test Page 
     </title> 
     <script language="JavaScript"> 
      function validate(formEntry) { 

       if (formEntry.Q1.q11.checked != true && formEntry.Q1.q12.checked != true) 
        return false; 

       return true; 
      } 
     </script> 
    </head> 
    <body> 
     <form action="somepage.py" method="POST" onsubmit="return validate(this);"> 
      <input type="radio" name="Q1" id="q11" value="1" /> 
      <input type="radio" name="Q1" id="q12" value="2" /> 
      <input type="submit" name="Submit" /> 
     </form> 
    </body> 
</html> 
+0

默认选中一个。 – RobG 2012-03-30 06:04:22

回答

0

如果你让一个按钮,通过defualt检查,然后一会经常进行检查:

<input type="radio" name="Q1" id="q11" value="1" checked> 
<input type="radio" name="Q1" id="q12" value="2" > 

或者功能可以简单:

function validate(formEntry) { 
    return formEntry.Q1[0].checked || formEntry.Q1[1].checked ; 
} 

如果选中任一项,将返回true,否则返回false。

0

if (!formEntry.Q1[0].checked && !formEntry.Q1[1].checked)

试图通过FORM_NAME访问输入。input_nameinput_id真的很奇怪。

0

看来工作,看看:

http://jsfiddle.net/EEgea/

也许你最好使用像jQuery框架来预防不同浏览器之间的javascript漏洞

或者使用像JQuery验证这样的验证框架,我高我建议。

0

试试你的功能,如: -

function validate(formEntry) { 

    var radiobtn=document.getElementsByName('Q1'); 
    if(!(radiobtn[0].checked || radiobtn[1].checked)) 
     return false; 

    return true; 
}