jQuery-validate:使用远程隐藏按钮?

时间:2016-09-26 23:44:58

标签: php jquery html jquery-validate

当我使用remote method中的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时,我得到以下输出 enter image description here

当我像这样添加jQuery Validation Plugin时

 $("#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不再位于&#39; $ _ POST`数组中。

enter image description here

我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

使用本地验证方法时,jquery-validate在验证失败时调用event.preventDefault(),否则正常返回以允许正常表单提交。

远程验证无法做到这一点,因为AJAX是异步的。它不等待响应,因此它总是阻止正常的表单提交。收到AJAX响应后,它会使用Javascript form.submit()提交表单。

使用Javascript提交表单时,浏览器不知道触发原始提交的按钮,因此它不会包含在POST数据中。

相关问题