Javascript JQuery on(“提交”)在第一次单击时未执行
我正在使用JQuery在提交表单后测试输入的大小:Javascript JQuery on(“提交”)在第一次单击时未执行,javascript,php,jquery,html,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&
<!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页
$(函数(){
var数据=;
$(“表格”)。在(“提交”,函数()上{
if(data.toString().length<4){
警报(数据);
返回false;
}
});
});
问题是警报(例如,如果我只输入1个字符)不会在第一次提交后弹出,而只在其他提交后弹出
谢谢首先,在JavaScript中嵌入PHP代码是非常不安全的。我想不出为什么要在客户端使用服务器端代码。另一种选择是,从PHP回显javascript代码,而不是相反 现在您的问题出现了,因为第一次加载页面时,没有发布任何内容。您有一些代码块,只有在发布某些内容后才会执行。如果您的PHP脚本可能显示错误,您将在第一次加载代码时看到一个
未定义变量
通知。您可以通过在条件中使用变量之前声明变量来解决此问题:
$data = 0; // Initialize variable here
if (isset($_POST['submit'])){
echo($_POST['mail']);
if(isset($_POST['mail'])){
$data=789;
}
}
因为当您第一次访问页面时,
var data
将为空。@arisaila但是当我提交表单时,POST变量不是空的,对吗?然后在我的代码中,它应该被传递var数据(实际上是这样),问题是它没有进入函数“$”(“form”)。在(“submit”,function()`谢谢,但问题仍然是一样的,我没有检索到$\u POST['submit']的值
当我在页面加载后第一次单击时,我现在理解的是,PHP在服务器端执行,Javascript在客户端执行。我的问题是,onsubmit JQuery函数在PHP执行之前执行,所以我想我需要另一个JQuery函数,即“wait”在它收到$_postvalue..@aurelSon之前,我认为您还没有尝试过我的代码。我在本地执行了它,它的工作方式完全符合您的要求。即使在页面重新加载之前,您第一次单击时也会发出警报。您注意到变量初始化了吗?