2012-07-20 37 views
0

我已經創建了一個簡單的表單驗證使用JavaScript,並希望添加一些模式測試的投入,以確保正確的信息提交顯然,但即時通訊非常新,並期待着看看有人可以幫我出來方面添加模式測試。如何添加正則表達式測試到我的JavaScript表單驗證?

我的驗證碼到目前爲止是:

function validate(form) { 
var fail = false; 
var name = document.getElementById("full_name"); 

if (name.value.length == 0) { 
    document.getElementById("okName").className = "fail"; 
    fail = true; 
}else{ 
    document.getElementById("okName").className = "success"; 
} 



var email = document.getElementById("email"); 
var emailPattern = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; 

if (email.value.length == 0) { 
    document.getElementById("okEmail").className = "fail"; 
    fail = true; 
}else{ 
    document.getElementById("okEmail").className = "success"; 
} 

}

我認爲我必須將狀態添加到「if」語句的電子郵件驗證,但沒有帶一個線索在哪裏開始?我知道我將如何使用jQuery做到這一點:

if(value.length<1 /*|| value==field_values[$(this).attr('id')]*/ || ($(this).attr('id')=='email' && !emailPattern.test(value)) ) 

但林不知道該怎麼做同樣的原始JavaScript作爲我不知道如何定位的電子郵件的輸入普通的JavaScript!如果任何人都可以幫助我,那真的很感激!

+0

任何理由不使用現有的圖書館來做到這一點? – 2012-07-20 13:57:16

+0

'!emailPattern.test(email.value)' – andlrc 2012-07-20 14:01:11

回答

2

這看起來像:

var email = document.getElementById("email"); 
var emailPattern = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; 

if (!emailPattern.test(email.value)) { 
    document.getElementById("okEmail").className = "fail"; 
    fail = true; 
}else{ 
    document.getElementById("okEmail").className = "success"; 
} 

沒有必要檢查字符串的長度爲好。不需要爲這樣簡單的獲取查詢你的網頁。 :-)

幾點建議:

  • 從不依賴於客戶端驗證只
  • 驗證,如果控制確實存在(即,如果(電子郵件){...})
  • 裝飾串或爲名稱提供模式,以及(您的形式單個空格字符驗證輸入表單字段)
  • 也是你的電子郵件模式實際上不是正確的(點是「任何字符」也是在[])
+0

+1客戶端驗證只談 – andlrc 2012-07-20 14:03:55

+0

感謝您的幫助! – DannyW86 2012-07-20 15:28:43

0
if (email.value.length === 0 || !emailPattern.test(email.value)) { 
    document.getElementById("okEmail").className = "fail"; 
    fail = true; 
} else { 
    document.getElementById("okEmail").className = "success"; 
}