Javascript true 条件未执行

标签 javascript php

真正的条件永远不会被执行,相反,错误的条件总是被执行。我似乎找不到我到底做错了什么。

<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/

相关文章:

javascript - Accordion 打开时交换背景图像

javascript - Tampermonkey - 匹配默认起始页

php - 基于文本PHP的动态图像

php - 登录php时重置密码不起作用

javascript - 当用 twig 定义元素时,通过 ID 捕获元素

javascript - 仅部分 AJAX 响应出现延迟

javascript - 使用 jQuery 在移动设备上处理长按和双击事件的最佳方法是什么?

javascript - Angular 引导问题 angular.bootstrap 不适用于我的应用程序

javascript - 将逗号分隔的数字添加到 Javascript 输出

php - 允许 Node.js Web 服务器处理 PHP