0

我试图理解这一点,但我遇到了一些麻烦。

基本上,我有一个表格,里面有一些输入。我将表单操作设置为脚本,该脚本将在提交时将一些内容输出到新页面并通过电子邮件发送给用户。伟大的。

我的问题是在验证他们的输入时。我想确保没有任何字段为空。如果它们留空,当用户按下提交时,我希望重新加载页面,突出显示留空的框并保留其先前的信息。

我只是不明白我应该怎么做。我在想我可以再次输出 HTML,但突出显示字段。这可行,但在代码中非常冗长,并且 URL 与以前不同,因为 URL 将是处理脚本的位置。我想我可以在处理脚本中验证它,然后将它们重定向回原始页面,但是我无法保留他们的输入并标记他们的空输入。

我已经用谷歌搜索并尝试找到合适的解决方案,他们中的很多人都在处理这个问题,他们在初始表单页面上有一个 php 脚本,他们检查用户是否点击提交的表单,如果他们在那里验证它做了,并输出结果(例如本教程:http: //papermashup.com/php-form-validation/)。很酷,但我有一些问题。

  • 这与提交时触发的 JavaScript 解决方案有何不同?我为什么不这样做呢?
  • 你怎么能把它放在你的表格之上?我认为代码从上到下读取,所以当它点击表单并点击提交时,我看不到上面的表单会如何触发。
  • 我不能用这个解决方案影响 CSS,可以吗?比如让一个盒子用红色突出显示?
  • 如果验证没问题,我该如何让他们进入处理脚本?我将它作为表单上的操作属性,但这似乎阻止了它。

这样做的正确方法是什么?我很困惑。

4

1 回答 1

0

有太多方法可以做到这一点首先 php 是服务器端语言,我假设您知道这一点,关于验证,它不像 javascript(客户端)那样工作,无法对 onsubmit 事件进行验证

一种解决方案是验证主页中的表单

我写得很快,检查我是否错过了报价或......但这应该这样做

<?php

$redirect_form="";
$highlight_field="";
$error="";
$valid=true;

if(isset($_POST["submit"]) && $_POST["submit"]=="Submit"){ //assuming that you have an input text called: first_name

$first_name=trim($_POST["first_name"]);

if($first_name==""){
$error.="Please enter your first name";
$highlight_field="class='highlight_field'";
$valid=false;
}

if($valid){

$redirect_form="<form name='new_page' action='new_page.php' method='post'>";
$redirect_form="<input type='hidden' name='first_name' value='".$first_name."' />";
$redirect_form="</form>";
$redirect_form="<script type='text/javascript>document.new_page.submit()</script>";

}

?>

<html>
<head>
<style>.highlight_field: color:#990000; </style>
<body>
<?php

if(isset($_POST["submit"]) && $_POST["submit"]=="Submit"){

if(!$valid){
echo error;
}
else{
echo $redirect_form;
}
?>

<form name='main_page' action='main_page.php' method='post'>
<span <?php echo $highlight_field; ?>>First name</span><input type='text' name='first_name' value='' />
<input type='submit' name='submit' value='Submit' />

</form>

</body>
</head>
</html>

或者你可以用ajax来做

于 2013-01-19T22:12:12.310 回答