为什么JS警报会杀死我的注册表


Why does JS alert kill my registration form?

我刚刚完成了连接到数据库的第一个工作注册表。实际上,它基本上是教程演示@http://jqueryvalidation.org/files/demo/milk/的副本,除了我必须添加数据库内容。

我还有一个小错误。除非我删除此代码,否则该表单不起作用:

// specifying a submitHandler prevents the default submit, good for the demo
submitHandler: function() {
alert("submitted!");
},

这有点微不足道,但如果用户在单击"提交"按钮时可以看到某种"成功"消息,那就太好了。我不想发布所有代码,但我有一个实时页面@http://www.govwa.org/test/registration.php

这是我在表单结束标记之前插入的 PHP 代码:

include('config.php');
$pdo = connect();
// adding new member using PDO with try/catch to escape the exceptions
try {
 $sql = "INSERT INTO g1_members (firstname, lastname, username,  password, password_confirm, email) VALUES (:firstname, :lastname,  :username, :password, :password_confirm, :email)";
  $query = $pdo->prepare($sql);
  $query->bindParam(':firstname', $_POST['firstname'], PDO::PARAM_STR);
  $query->bindParam(':lastname', $_POST['lastname'], PDO::PARAM_STR);
  $query->bindParam(':username', $_POST['username'], PDO::PARAM_STR);
  $query->bindParam(':password', $_POST['password'], PDO::PARAM_STR);
  $query->bindParam(':password_confirm', $_POST['password_confirm'],  PDO::PARAM_STR);
  $query->bindParam(':email', $_POST['email'], PDO::PARAM_STR);
  $query->execute();
  } catch (PDOException $e) {
  echo 'PDOException : '.  $e->getMessage();
 }

有没有人预感到问题可能是什么?或者,当有人单击"提交"按钮时,是否有另一种显示消息的方法?

submitHandler替换默认提交,因此当您添加该处理程序时,表单永远不会提交,您必须手动执行此操作。

从文档

用于在表单有效时处理实际提交的回调。得到 表单作为唯一的参数。替换默认提交。右边 在验证表单后通过 Ajax 提交表单的地方。

删除它,或在处理程序中提交有效表单

submitHandler: function(form) {
    alert("submitted!");
    form.submit()
},