2012-04-15 71 views
1

有兩種選擇;英文或非英文。當你不選擇他們中的任何一個或者同時選擇它們時,它應該給出錯誤,但它不會給出。你能幫忙嗎?謝謝。 ps:儘管我爲條款和條件製作了一個複選框,但警報不起作用。複選框javascript

的JavaScript

function onFormSubmit(form_element) { 

     if (form_element.click.checked == false) 
       { 
       alert("Please check language"); 
       return false; 
       } 
    return true; 
} 

HTML 

<form onsubmit="return onFormSubmit(this)"> 
     Language: <input type="checkbox" name="click" value="english">english 
</form> 
+4

你有沒有考慮使用無線輸入呢?這種方式只能選擇一種,瀏覽器默認默認檢查一種。 – 2012-04-15 14:05:37

+0

是的,我知道這很容易,但它應該是複選框。 :( – user1332075 2012-04-15 14:08:54

+2

「假設是」爲什麼?對於這種使用情況,它真的應該*是無線電輸入 – 2012-04-15 14:41:41

回答

1

條件應該是...

if ((form_element.click_1.checked == true && form_element.click_2.checked == true) || (form_element.click_1.checked == false && form_element.click_2.checked == false)) 

編輯

這是我用過的東西。

<script> 
function onFormSubmit(form_element) { 

     if ((form_element.click_1.checked == true && form_element.click_2.checked == true) || (form_element.click_1.checked == false && form_element.click_2.checked == false)) 
       { 
       alert("Please check language"); 
       return false; 
       } 
    return true; 
} 
</script> 


<form onsubmit="return onFormSubmit(this)"> 
     Language: <input type="checkbox" name="click_1" value="english">english 
        <input type="checkbox" name="click_2" value="non english">non english</p> 
<input type="submit"> 
</form> 
+0

它並沒有解決問題。當我選擇兩個或全都沒有,它仍然不會給出任何錯誤。 – user1332075 2012-04-15 14:14:31

+0

什麼你的意思是錯誤嗎?你的提示信息是否正確? – 2012-04-15 14:16:06

+0

是的。提醒信息。 – user1332075 2012-04-15 14:16:46

0

問題是「onFormSubmit(this)」 - 'this'在調用事件時不會引用表單。如果你從文檔中查找表單,它會正常工作。

<!doctype html> 
<html> 
<head> 
<script type="text/javascript"> 
function validateForm() { 
     var form = document.getElementById("myForm"); 
     if (!form.language.checked) { 
       alert("Please check language"); 
       return false; 
     } 
     return true; 
} 
</script> 
</head> 
<body> 
<form id="myForm" onsubmit="return validateForm()"> 
     Language: <input type="checkbox" name="language">English</input><br /> 
     <input type="submit" /> 
</form> 
</body> 
</html> 
+1

您確定要複選框嗎?單選按鈕會更好,因爲一次只能選擇一個按鈕。 – 2012-04-15 14:22:36

+0

我改變了它作爲條件的條款,我需要複選框 – user1332075 2012-04-15 14:32:42

+0

你的功能不起作用的原因是因爲你說錯了。如果你不能改變功能,改變形式:

... ... – 2012-04-15 14:36:19

0
<form onsubmit="return onFormSubmit(this)"> 
     Language: <input type="checkbox" name="click_1" value="english">english 
        <input type="checkbox" name="click_2" value="non english">non english</p> 
     <input type="submit" /> 
</form> 
<script type="text/javascript"> 
function onFormSubmit(form_element) { 
    if ((form_element.click_1.checked == true && form_element.click_2.checked == true)) { 
     alert("Please check only one choice!"); 
     return false; 
    } else if ((form_element.click_1.checked == false && form_element.click_2.checked == false)) { 
     alert("Please check your choice!"); 
     return false; 
    } 
    return true; 
} 
</script> 
​ 

http://jsfiddle.net/ocanal/3AWUp/

0

我添加了一個提交按鈕,您的HTML和IDS每個元素

HTML

<form id="myForm"> 
     Language: <input id="english" type="checkbox" name="click_1" value="english">english 
        <input id="nonEnglish" type="checkbox" name="click_2" value="non english">non english</p> 
<button type="submit">Submit</button> 
</form> 

我附加功能的onsubmit事件的執行上驗證。 的Javascript

document.getElementById("myForm").onsubmit = 
function() { 
     if ((document.getElementById("english").checked == false && document.getElementById("nonEnglish").checked == false) || (document.getElementById("english").checked == true && document.getElementById("nonEnglish").checked == true)) 
       { 
       alert("Please check language"); 
       return false; 
       } 
    return true; 
} 

演示:http://jsfiddle.net/j3J4E/

+0

謝謝,但我必須使用原來的功能。 – user1332075 2012-04-15 14:31:22