我在提交表单后使用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个字符)在第一次提交后不会弹出,而是仅在其他提交之后弹出。
谢谢
答案 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;
}
}