[英]javascript email validation , can't get indexOf work
這是我的html代碼:
<input id="email" placeholder="Enter your email" type="email" required>
<button type="submit" id="submitButton">SUBMIT</button>
js代碼:
var email = document.getElementById('email');
var submitButton = document.getElementById('submitButton');
submitButton.onclick = function(){
if(email.value == "")
alert("Please enter correct email");
return false;
if(email.indexOf("@") < 1 || email.lastIndexOf(".") - email.indexOf("@") <2)
alert("Please enter correct email");
return false;
else
return(true);
錯誤消息始終相同:TypeError:email.indexOf不是HTMLButtonElement.submitButton.onclick上的函數
您需要輸入元素的值。 email = document.getElementById('email')
將返回輸入元素,但不是它的值
進行更改
var email = document.getElementById('email').value
;
如果您要檢查電子郵件。 使用正則表達式更容易做到這一點。 請參閱下面的示例以了解操作方法。
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
它使用許多資源參考的基本正則表達式來檢查電子郵件的類型。
function validateEmail(email) { var re = /^(([^<>()[\\]\\\\.,;:\\s@\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\"]+)*)|(\\".+\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/; return re.test(email); } function validate() { $("#result").text(""); var email = $("#email").val(); if (validateEmail(email)) { $("#result").text(email + " is valid :)"); $("#result").css("color", "green"); } else { $("#result").text(email + " is not valid :("); $("#result").css("color", "red"); } return false; } $("#validate").bind("click", validate);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form> <p>Enter an email address:</p> <input id='email'> <button type='submit' id='validate'>Validate!</button> </form> <h2 id='result'></h2>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.