一起使用javascript和php

时间:2010-05-17 22:32:45

标签: php javascript

我有一个PHP表单,需要在提交时进行一些非常简单的验证。我宁愿做验证客户端,因为有很多服务器端验证恰好处理将表单值写入数据库。所以我只想调用一个javascript函数onsubmit来比较两个密码字段中的值。这就是我所拥有的:

function validate(form){
  var password = form.password.value;
  var password2 = form.password2.value;
  alert("password:"+password+" password2:" + password2);

  if (password != password2) {
    alert("not equal");
    document.getElementByID("passwordError").style.display="inline";
    return false;
  }
  alert("equal");
  return true;
}

如果两个密码不匹配,则会显示包含错误消息的默认隐藏div。警报只是显示密码和密码2的值,然后再次指示它们是否匹配(不会在生产代码中使用)。

我正在使用输入类型=提交按钮,并在表单标记中调用该函数:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" onsubmit="return validate(this);">

输入不匹配的值时,所有内容都会按预期发出警报。我希望(并假设,基于过去的使用)如果函数返回false,则不会发生实际提交。然而,确实如此。我正在通过在密码字段中输入不匹配的值进行测试,并且警报清楚地显示了值和不相等的结果,但实际的表单操作仍在发生,并且它正在尝试写入我的数据库。

我是PHP的新手;有什么关于它不会让我这样与javascript结合?如果返回true,使用input type =按钮并在函数本身中包含submit()会更好吗?

3 个答案:

答案 0 :(得分:5)

如果JavaScript出现错误,则无法返回false,无论如何都会提交表单。

您的javascript中存在错误:getElementByID应为getElementById

答案 1 :(得分:0)

使用像原型这样的javascript库和像Event.stop()这样的方法:

http://www.prototypejs.org/api/event/stop

答案 2 :(得分:0)

确保方法实际返回false。如果在返回false语句之前有错误,例如在此行

 document.getElementByID("passwordError").style.display="inline";

然后表格仍然可以提交。