2009-04-16 52 views
0

我正在使用JavaScript表單驗證我正在運行的比賽的輸入表單。它是內聯CSS,因此如果某些條件不符合,它會顯示紅色的消息,其中會顯示「請輸入您的電子郵件地址」或「看起來不是有效的電子郵件地址」等。服務器上的JavaScript表單驗證/本地

腳本,它坐落在文件的頂部,看起來是這樣的:

<script> 

    function checkForm() { 
name = document.getElementById("name").value; 
email = document.getElementById("email").value; 
terms = document.getElementById("terms").value; 


    if (name == "") { 
    hideAllErrors(); 
document.getElementById("nameError").style.display = "inline"; 
document.getElementById("name").select(); 
document.getElementById("name").focus(); 
    return false; 
    } else if (email == "") { 
hideAllErrors(); 
document.getElementById("emailError").style.display = "inline"; 
document.getElementById("email").select(); 
document.getElementById("email").focus(); 
    return false; 
    } 

else if (!check_email(document.getElementById("email").value)) { 
hideAllErrors(); 
document.getElementById("emailError2").style.display = "inline"; 
document.getElementById("email").select(); 
document.getElementById("email").focus(); 
    return false; 
    } 

else if (!document.form1.terms.checked){ 
hideAllErrors(); 
document.getElementById("termsError").style.display = "inline"; 
document.getElementById("terms").select(); 
document.getElementById("terms").focus(); 
    return false; 
    } 

    return true; 
    } 

function check_email(e) { 
ok = "1234567890qwertyuiop[][email protected]_QWERTYUIOPASDFGHJKLZXCVBNM"; 

for(i=0; i < e.length ;i++){ 
if(ok.indexOf(e.charAt(i))<0){ 
return (false); 
} 
} 

if (document.images) { 
re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/; 
re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 
if (!e.match(re) && e.match(re_two)) { 
return (-1);   
} 

} 

} 
function hideAllErrors() { 
document.getElementById("nameError").style.display = "none" 
document.getElementById("emailError").style.display = "none" 
document.getElementById("commentError").style.display = "none" 
document.getElementById("termsError").style.display = "none" 

    } 

的電子郵件,姓名等驗證工作就好了,這是行不通的看起來像這樣形式的一部分:

<form onSubmit="return checkForm();" method="get" action="sweepstakes-results.php" 
<input type=checkbox name=terms id=terms ><br></p> 
<div class=error id=termsError>Required: Please check the checkbox<br></div> 
<p><input type=submit value=Send style="margin-left: 50px"> </p> 
</form> 

「條款和條件」複選框僅適用於文件位於本地計算機上,上傳時,即使沒有選中,我們也可以提交表格。 JavaScript不在瀏覽器上運行?文件的位置如何影響?

回答

0

你的表單沒有名字,所以下面的代碼將無法正常工作:

else if (!document.form1.terms.checked){ 

既然你已經檢索結賬的DOM對象,做到以下幾點。更改行:

terms = document.getElementById("terms").value; 

到:

terms = document.getElementById("terms"); 

並與替換否則,如果代碼:

else if (!terms.checked){ 
+0

你是對的!我照你說的做了,但有一個新問題。現在我無法通過驗證。不管它是什麼,即使我檢查框也會返回錯誤。 – 2009-04-16 23:30:46