【发布时间】:2018-01-16 09:42:44
【问题描述】:
我有一个不同输入类型的表单。这里我需要显示错误消息取决于用户的输入。
如果字段为空,我将显示Enter required fields。
如果电子邮件无效,我需要显示Enter valid email。
但我的代码只显示Enter valid email 消息,即使字段是空的。为什么它会这样显示?我的代码有什么问题?
$(document).ready(function () {
$('#errorMsg').hide();
})
function submitForm() {
$('#myForm').find('input,select').each(function () {
var element = $(this).val() == undefined ? '' : $(this).val().trim();
if (element == '') {
$(this).addClass('borderDanger');
$('#errorMsg').html('Enter all required fields');
$('#errorMsg').show();
}
else {
$(this).removeClass('borderDanger');
$('#errorMsg').html('');
$('#errorMsg').hide();
}
})
$('#myForm').find('input[type="email"]').each(function () {
var emailRejex = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/;
if (String($(this)).match(emailRejex)) {
$(this).removeClass('borderDanger');
$('#errorMsg').html('');
$('#errorMsg').hide();
}
else {
$(this).addClass('borderDanger');
$('#errorMsg').html('Enter valid Email');
$('#errorMsg').show();
}
})
}
#errorMsg {
width: 60%;
padding: 9px;
z-index: 9;
margin-top: 4%;
color: #a94442;
background-color: #f2dede;
border: 1px solid #ebccd1;
border-radius: 4px;
right: 5%;
font-weight: bold;
}
.borderDanger {
border:1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="errorMsg"></div>
<div id="myForm">
<input type="text">
<input type="email">
<button onclick="submitForm()">Submit</button>
</div>
【问题讨论】:
-
使用 Jquery 验证插件
-
您的正则表达式验证正在第二次运行。正则表达式验证在空字符串上失败,这就是您看到无效电子邮件的原因。需要先检查邮箱是否为空
标签: javascript jquery