2012-03-30 75 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; 
}