2014-01-30 57 views
-2

我想驗證我的表單,但是當創建的函數不返回false時,它應該停止提交過程,但它不會。功能不會在Javascript中返回false

我的代碼

var emailRE = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; 

function formChecker() { 
    if (!emailRE.test(document.reservation.email.value)) { 
     window.alert("Your e-mail address is invalid"); 
     return false; 
    } 

} 

我得到警報,以便函數檢查電子郵件,但隨後在該點

+3

你怎麼叫它? – SLaks

+1

你是怎麼確定的?當你調試時,是否到達了「return」行? – David

+0

僅僅返回false將不會停止在所有瀏覽器中提交。檢查了這一點:[返回false不停止表單提交](http://stackoverflow.com/questions/12126583/return-false-not-stoppingform-submit) – Renan

回答

0

先出站:

我不知道該document.reservation .email.value並不總是適用於所有瀏覽器。多年來,我用這種符號讓我感到沮喪。

參見:Best Practice: Access form elements by HTML id or name attribute?

下面的示例工作很適合我。發佈小提琴這裏:

<form id="reservation"> 
    Valid Email: <input type=text id="validemail" value="[email protected]"> 
    <label id=Result1>Result is: </label> 
    <br> 
    Invalid Email: <input type=text id="invalidemail" value="[email protected]"> 
    <label id=Result2>Result is: </label> 
</form> 

var emailRE = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; 

function formChecker(oElement) { 
    if (!emailRE.test(oElement)) { 
     window.alert("Your e-mail address is invalid"); 
     return false; 
    } else { 
     window.alert("Your e-mail address is valid"); 
     return true; 
    } 
} 

document.getElementById("Result1").innerHTML = "Result is: " + formChecker(document.forms["reservation"].validemail.value); 

document.getElementById("Result2").innerHTML = "Result is: " + formChecker(document.forms["reservation"].invalidemail.value); 

看到這裏的工作例如:http://jsfiddle.net/vNmt4/1/