PHP / JavaScript表单验证?

时间:2013-03-19 22:18:39

标签: php javascript

我是PHP和JavaScript的新手。我想验证表单,如果表单输入字段是正确的,然后将其发送到PHP外部脚本。我尝试过这样的事情:

<head>
<script type="text/javascript">
  function Validate(){
    var x=document.forms["form"]["firstname"].value;
    var y=document.forms["form"]["lastname"].value;
    var z=document.forms["form"]["age"].value;
    if(x==null || x=="") {
      alert("Input name!");
    } else if(y==null || y=="") {
      alert("Input surname!");
    } else if(z==null || z=="") {
      alert("Input age!");
    } else {
  // IS IT POSSIBLE TO SEND FORM HERE FORM VARIABLES TO PHP SCRIPT?
    }
  }
</script>
</head>
<body>

  <form name="forma" action="validate.php" method="post" onSubmit="return Validate()">
    Firstname: <input type="text" name="firstname">
    Lastname: <input type="text" name="lastname">
    Age: <input type="text" name="age">
    <input type="submit">
  </form>
</body>
</html>

4 个答案:

答案 0 :(得分:1)

由于您没有从函数返回false,因此无论如何都应该提交表单。您可以通过让validate()函数返回false来阻止它被提交。

答案 1 :(得分:1)

您的代码看起来是正确的,除了您可能希望return false未能阻止表单提交的事实。如果没有返回false,表单将继续提交。

我还认为你可能想要为你的表单命名form而不是forma

答案 2 :(得分:1)

你应该验证输入服务器端(php),即使你是客户端(javascript)。

您可以通过查看validate.php中的$_POST来执行此操作:
在您的脚本开头:

if (isset($_POST)) {  // form has been sent

    if (!isset($_POST['firstname']) || strlen($_POST['firstname'])==0) { // no entry 

        $e['firstname']='please enter a firstname!'; // prepare error-msg
    }

    if (!isset($e)) {  // no error, continue handling the data

        // write data to database etc.
    }
}

// in your form...

if (isset($e)) echo "there were errors: ". implode(',',$e);

答案 3 :(得分:1)

您需要输入以下代码:

function Validate(){
var x=document.forms["form"]["firstname"].value;
var y=document.forms["form"]["lastname"].value;
var z=document.forms["form"]["age"].value;
if(x==null || x=="") {
  alert("Input name!");
  return false;
} else if(y==null || y=="") {
  alert("Input surname!");
  return false;
} else if(z==null || z=="") {
  alert("Input age!");
  return false;
} else {
  return true;
}
}