我正在創建一個登錄系統,并且正在嘗試驗證電子郵件輸入。驗證作業正常,但是當電子郵件是 .info 域示例([email protected])時出現問題,這似乎是一個有效的域,但系統將其標記為無效。你能看看嗎?
如果您想知道 onkeypress 事件,我正在使用它來防止空格和復制/粘貼。
這是驗證碼
$('#email').keyup(function () {
if ($("#email").val().match(/^\w ([\.-]?\w )*@\w ([\.-]?\w )*(\.\w{2,3}) $/)) {
$("#emailmessage").html('Email is valid!');
} else {
$("#emailmessage").html('This is invalid email!');
}
});
<input type="email" placeholder="E-mail..." id="email" name="email" onkeypress=" return event.keyCode || event.which, event.keyCode != 32 && event.which != 32" onpaste="return false;">
<div class="message" id="emailmessage"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
uj5u.com熱心網友回復:
問題在這里,\w{2,3}您將其限制為僅允許 2 或 3 個字母,將其更改為\w{2,4}
顯示代碼片段
$('#email').keyup(function() {
if ($("#email").val().match(/^\w ([\.-]?\w )*@\w ([\.-]?\w )*(\.\w{2,4}) $/)) {
$("#emailmessage").html('Email is valid!');
} else {
$("#emailmessage").html('This is invalid email!');
}
});
<input type="email" placeholder="E-mail..." id="email" name="email" onkeypress=" return event.keyCode || event.which, event.keyCode != 32 && event.which != 32" onpaste="return false;">
<div class="message" id="emailmessage"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
這是您的代碼的改進版本,我還洗掉了 jQuery
const email = document.getElementById('email');
const message = document.getElementById('emailmessage');
email.addEventListener('keyup', e => {
const validEmail = e.currentTarget.value.match(/^\w ([\.-]?\w )*@\w ([\.-]?\w )*(\.\w{2,4}) $/)
message.textContent = validEmail ? 'Email is valid!' : 'This is invalid email!'
})
email.addEventListener('keypress', e => e.code === 'Space' && e.preventDefault())
email.addEventListener('paste', e => e.preventDefault())
<input type="email" placeholder="E-mail..." id="email" name="email">
<div class="message" id="emailmessage"></div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/492521.html
標籤:javascript jQuery 形式 验证 电子邮件
