jQuery-验证:使用远程隐藏按钮?
jQuery-validate: Using remote hides button?
当我使用 remote method from the jQuery Validation Plugin 并按下提交按钮时,提交按钮名称未列在 $_POST
数组中。这是一个错误还是我做错了什么?
这是一个小例子:
<?php
if(!empty($_POST))print_r($_POST);
?>
<form method="POST" id='mainForm'>
<input type='email' name="email" value="test@test.com">
<button name="superbutton">Press me</button>
</form>
当我按下 superbutton
时,我得到以下输出
当我像这样添加 jQuery 验证插件时
$("#mainForm").validate({
rules: {
email: {
required: true,
email: true
}
}
});
我仍然得到相同的输出。但是,当我添加远程方法时:
$("#mainForm").validate({
rules: {
email: {
required: true,
email: true,
remote: {
url: "test.php"
}
}
}
});
与test.php
<?php
header('Content-Type: application/json');
echo json_encode("true");
然后 superbutton
不再在 '$_POST` 数组中。
我是不是做错了什么?
使用本地验证方法时,jquery-validate 在验证失败时调用 event.preventDefault()
,否则 returns 通常会允许正常的表单提交。
这对于远程验证是不可能的,因为 AJAX 是异步的。它不等待响应,所以它总是阻止正常的表单提交。收到 AJAX 响应后,它使用 Javascript form.submit()
提交表单。
当使用 Javascript 提交表单时,浏览器不知道触发原始提交的按钮,因此它不会包含在 POST 数据中。
当我使用 remote method from the jQuery Validation Plugin 并按下提交按钮时,提交按钮名称未列在 $_POST
数组中。这是一个错误还是我做错了什么?
这是一个小例子:
<?php
if(!empty($_POST))print_r($_POST);
?>
<form method="POST" id='mainForm'>
<input type='email' name="email" value="test@test.com">
<button name="superbutton">Press me</button>
</form>
当我按下 superbutton
时,我得到以下输出
当我像这样添加 jQuery 验证插件时
$("#mainForm").validate({
rules: {
email: {
required: true,
email: true
}
}
});
我仍然得到相同的输出。但是,当我添加远程方法时:
$("#mainForm").validate({
rules: {
email: {
required: true,
email: true,
remote: {
url: "test.php"
}
}
}
});
与test.php
<?php
header('Content-Type: application/json');
echo json_encode("true");
然后 superbutton
不再在 '$_POST` 数组中。
我是不是做错了什么?
使用本地验证方法时,jquery-validate 在验证失败时调用 event.preventDefault()
,否则 returns 通常会允许正常的表单提交。
这对于远程验证是不可能的,因为 AJAX 是异步的。它不等待响应,所以它总是阻止正常的表单提交。收到 AJAX 响应后,它使用 Javascript form.submit()
提交表单。
当使用 Javascript 提交表单时,浏览器不知道触发原始提交的按钮,因此它不会包含在 POST 数据中。