True条件永远不会执行,而总是执行false条件。我似乎找不到我到底做错了什么。
<script>
$(document).ready(function(){
var userEmail = $('input#userEmail').val();
$("#email-submit").click(function(){
//False condition
if(!validateEmail(userEmail)) {
$('#emailErrors').text("Enter a valid Email");
}
//true conidition
if(validateEmail(userEmail)) {
alert("true");
$.post('includes/loginFunction.php', {userEmail: userEmail}, function (data){
$('#emailErrors').text(data);
});
}
});
});
function validateEmail($email) {
var emailReg = /^(['w-'.]+@(['w-]+'.)+['w-]{2,4})?$/;
return emailReg.test( $email );
}
</script>
您需要在单击处理程序中检查input#userEmail
。否则,您只存储了执行$(document).ready()
回调时输入的值。
$("#email-submit").click(function(){
var userEmail = $('input#userEmail').val();
if (!validateEmail(userEmail)) {
$('#emailErrors').text("Enter a valid Email");
} else {
// true condition
}
}
您也可以使用else
,而不是两次调用validateEmail
。
此外,在validateEmail
函数中,您声明了参数$email
。通常,在缓存jQuery(或其他库)对象时,在变量前添加$
前缀的惯例是这样的。您可能应该将其切换为简单的email
。
https://jsfiddle.net/uf6Ld70f/
$(document).ready(function () {
$("#email-submit").click(function () {
var userEmail = $('input#userEmail').val();
//true conidition
if (validateEmail(userEmail)) {
alert("true");
$.post('includes/loginFunction.php', {
userEmail: userEmail
}, function (data) {
$('#emailErrors').text(data);
});
// false
}else{
$('#emailErrors').text("Enter a valid Email");
}
});
});
function validateEmail($email) {
var emailReg = /^(['w-'.]+@(['w-]+'.)+['w-]{2,4})?$/;
return emailReg.test($email);
}