在发布到服务器之前做一些客户端验证 - 浏览器问题

时间:2013-07-14 12:42:04

标签: javascript html forms client-server

我有一个表单,我将其发布到PHP服务器页面。在我POST之前,我在客户端进行了一些验证测试,如果一切正常,我会返回true然后提交开始,如果出现问题,我会返回false并提交取消。

<form  onsubmit="return validateForm()" method="post" action="t5.php">

和验证功能:

function validateForm() {

    email = document.getElementById('email').value;
    name = document.getElementById('name').value;

    if ((name==="")|| (email=="") ) {
       document.getElementById('validateError').innerHTML="error text";


       return false;
    }
    else
  return true;

};

此逻辑适用于上一个Chrome版本,但在Chrome 19和Firefox上尝试使用此功能并返回false,但仍然立即执行提交。 任何想法?

3 个答案:

答案 0 :(得分:0)

尝试使用preventDefault()停止表单的设置。

如果一切正常,请提交

HTMLFormElement.submit()

答案 1 :(得分:0)

试试这个:

Java脚本

function validateForm(e) {

    email = document.getElementById('email').value;
    name = document.getElementById('name').value;

    if ((name=="")|| (email=="") ) {
       document.getElementById('validateError').innerHTML="error text";
       e.preventDefault();
    }


};

<强> HTML

<form  onsubmit="validateForm(event)" method="post" action="t5.php">

答案 2 :(得分:0)

而不是在&#34; onsubmit&#34;上调用您的验证功能,您可以在按钮单击时调用类似的功能,如果没有错误,则通过代码提交表单

尝试类似

的内容
<form name="testform" id="testform" method="post" action="t5.php">

    <input type="text" name="name" id="name"/>
    <input type="text" name="email" id="email"/>
    <input type="button" name="Submit" value="Submit" onclick="validateSubmitForm();"/>
</form>

validateSubmitForm函数可能有这样的东西

function validateSubmitForm() {
   var email = document.getElementById('email').value;
   var name = document.getElementById('name').value;

   if ((name=="")|| (email=="") ) {
     document.getElementById('validateError').innerHTML="error text";
   }
   else {
     document.testform.submit();
   }
}