2012-10-18 55 views
0

請有人可以幫忙。這種表單驗證不會觸發。這真讓我很沮喪。我是一個PHP開發人員而不是JS,所以即使它很簡單,我仍然爲此苦苦掙扎。我只是試圖驗證基於被勾選的刪除框的形式。Javascript表單驗證onSubmit不觸發

當我點擊提交時沒有任何顯示。它只是提交表單,所以它必須返回true。

function deleteVal(chk) { 

    var chk; 

    // If the checkbox has been set to delete 
    if (chk.checked == "delete") { 

     var ok=confirm("You are about to delete the selected images below.\nAre you sure you want to do this?"); 

     if (ok) { 

      // Submit 
      return true; 

     } else { 

      // Don't submit 
      return false; 

     } 

    } 

    // Delete box was not ticked so return true and submit form 
    return true; 

} 

</script> 

<form action="" method="POST" onSubmit="return deleteVal(delete)"> 
    <label>Delete images?</label><input type="checkbox" name="delete" value="delete" /> 
    <input type="submit" name="submit" value="Submit" /> 
</form> 
+0

爲什麼你'VAR CHK;''裏面功能deleteVal(CHK)'?這會使'chk'變成'undefined'。另外,'if(chk.checked ==「delete」)'不正確,它應該是'if(chk.checked == true)'。 – Passerby

+0

爲什麼你在onSubmit上調用函數,只需要在提交按鈕上點擊它就可以了...它會工作... –

+0

感謝您的幫助。但爲什麼「你爲什麼」類型的問題?我明顯卡住了,所以這就是爲什麼我這樣做的事情,因爲我不知道如何正確地做到這一點,因此這篇文章。 爲您的建議工作沒有記錄。我欣賞幫助。 – 30secondstosam

回答

2

您需要像這樣正確得到checked值,看看它是真是假。

var chk = document.getElementById('delete'); 

// If the checkbox is checked 
if (chk.checked == true) { 

然後,你不需要傳遞一個變量給函數,但是,你確實需要給你一個複選框的ID。

<form action="" method="POST" onSubmit="return deleteVal();"> 
    <input type="checkbox" name="delete" id="delete"/> 
    <input type="submit" name="submit" value="Submit" /> 
</form> 

測試的代碼 - http://pastebin.com/FdWdeSCN

+0

非常感謝Wezly。這是完美的 - 卓越的作品。我知道我很接近! 比我在這篇文章中得到的其他答案好得多。人們問我「爲什麼」我以某種方式做了某件事,事實上,我實際上是在做正確的事情。 再次感謝。 – 30secondstosam

+0

np - 就像一個說明,這個解決方案可以通過jQuery進一步簡化。 – Wez

+0

你會如何在JQuery中做到這一點?我在家裏使用JQuery,但我目前在辦公室和某些網站,我們不使用它...這是其中之一 – 30secondstosam