2013-11-20 67 views
0

我想創建一個簡單的複選框和按鈕,將驗證用戶已閱讀TOS。出於某種原因,我的代碼不起作用。頁面加載,但按下按鈕並沒有達到預期的效果。 Firebug說我沒有錯誤,所以我認爲我誤解了一些事情是如何工作的。任何人都可以解釋我在這裏做錯了嗎?我對Javascript仍然很陌生。麻煩與Javascript驗證程序

<html> 
<head> 
<script language="javascript" type="text/javascript"> 
function validateForm() 
{ 
    if(document.getElementById("TOSbox").checked) 
    { 
     window.location.href = "/give.html"; 
    } 
    else 
    { 
     document.getElementById("TOSWarning").innerHTML="You need to agree to the TOS first."; 
    } 
} 
</script> 
</head> 
<body> 
    This is where the TOS goes. 
    <br> 
    <form name="TOSform" action=""> 
     <input type="checkbox" name="TOSbox" value="checked">I have read and agree to the Terms of Service.<br> 
     <button onclick="validateForm()">I Agree</button> 
    </form> 
    <p id="TOSWarning"></p> 
</body> 
</html> 
+0

請確保以防止窗體的默認行爲。 – elclanrs

+2

*「我正在嘗試創建一個簡單的複選框和按鈕,用於驗證用戶是否閱讀過TOS」*這很容易!答案是:**不,他們沒有**。根本不需要看複選框。 –

+0

@elclanrs的代碼看起來像OP知道如何防止默認行爲? – kay

回答

2

<button>需要type="button",對於初學者避免提交表單(或返回false時,形式是無效的)。此外,您正在使用getElementById,但您的複選框沒有ID,只有一個名稱。嘗試:

<input type="checkbox" name="TOSBox" id="TOSbox" value="checked">I have read and agree to the Terms of Service.<br> 
<button type="button" onclick="validateForm();">I Agree</button> 
1

您需要返回false以防止默認提交行爲。

<button onclick="validateForm(); return false;">I Agree</button> 
1

相關:https://stackoverflow.com/a/10079197/1026459

當按鈕被無型使用的形式內,它的默認類型爲提交。

考慮使用<button type="button"...>以避免在按下按鈕時發佈表單。

此外,在您正在使用的JavaScript,您正在尋找一個id="TOSbox",但您的複選框實際上只使用name="TOSbox"。您應該添加該ID到它

<input type="checkbox" id="TOSbox" name="TOSbox" value="checked">