Javascript true条件未被执行


Javascript true condition not being executed

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);
}