JQuery on(“submit”)没有在第一次点击时执行

时间:2017-03-19 12:56:29

标签: javascript php jquery html

我在提交表单后使用JQuery来测试输入的大小:

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Page 1</title>
  <meta charset="utf-8">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

</head>

<body>
 <form method="post" action="essai.php">
    <input type="text" name="mail" id="email" placeholder="mail"/><br />
    <input type="submit" name="submit" value="Validate" />
 </form>

   <?php

        if (isset($_POST['submit'])){
            echo($_POST['mail']);
            if(isset($_POST['mail'])){
                $data=789;
            }

        }


    ?>

  <script>

    $(function(){
        var data = <?php echo json_encode($data); ?>;
        $("form").on("submit", function() {

            if(data.toString().length < 4) {

                alert(data);
                return false;

                }

        });
      });
</script>

</body>
</html>

问题是警报(例如,如果我只输入1个字符)在第一次提交后不会弹出,而是仅在其他提交之后弹出。

谢谢

1 个答案:

答案 0 :(得分:0)

首先,在PHP中嵌入PHP代码非常不安全。我无法想到您希望在客户端使用服务器端代码的一个原因。作为替代方案,请回显PHP中的javascript代码,而不是反过来。

现在您的问题出现了,因为第一次加载页面时,没有发布任何内容。你有一些代码块只有在发布后才能执行。如果您的PHP脚本可能显示错误,您将在第一次加载代码时看到undefined variable通知。您可以通过在条件中使用变量之前声明变量来解决这个问题:

     $data = 0; // Initialize variable here

    if (isset($_POST['submit'])){
        echo($_POST['mail']);
        if(isset($_POST['mail'])){
            $data=789;
        }

    }