真正的条件永远不会被执行,相反,错误的条件总是被执行。我似乎找不到我到底做错了什么。
<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(或其他库)对象时,在变量之前添加 $
前缀的惯例是。您可能应该将其切换为简单的电子邮件
。
关于Javascript true 条件未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32213679/