我制作了一个只需要5个字段的表单,其他字段是可选的。
我的表单操作为空,但onSubmit为:
function validateInput()
{
var ifEmpty = (document.forms['orderform'].naam.value == "" ||
document.forms['orderform'].woonplaats.value == "" ||
document.forms['orderform'].straatnaam.value == "" ||
document.forms['orderform'].huisnummer.value == "" ||
document.forms['orderform'].telefoonnummer.value == "");
if(ifEmpty)
{
document.orderform.action ="index.php?page=pizzaorder";
}else{
document.orderform.action ="index.php?page=pizza_bestelling";
}
}
因此,当这5个字段中的1个为空时,操作将为index.php?page=pizzaorder
,如果一切正常,则操作index.php?page=pizza_bestelling
这一切都正常工作。但是,如果其中一个字段为空,它将提交给自己,即page = pizzaorder。
(我不能使用$_SERVER['PHP_SELF']
的原因是因为我正在使用包含菜单。这意味着我总是在同一页面上,它只会包含基于菜单选项的不同文件。所以如果我是使用$_SERVER['PHP_SELF']
我会发送到默认的index.php,这将是我的主页,这不是我想要的)
无论如何,如果其中一个字段未填充,它将发送到同一页面,其中包含空字段旁边的错误消息,这也正常工作。
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["naam"]))
{$naamErr = "Vul uw naam in";}
else
{$naam = test_name($_POST["naam"]);}
if (empty($_POST["woonplaats"]))
{$woonplaatsErr = "Vul uw Woonplaats in";}
else
{$woonplaats = test_name($_POST["woonplaats"]);}
if (empty($_POST["straatnaam"]))
{$straatErr = "Vul uw straat in";}
else
{$straatnaam = test_name($_POST["straatnaam"]);}
if (empty($_POST["huisnummer"]))
{$huisnummerErr = "Vul uw Huisnummer in";}
else
{$huisnummer = test_name($_POST["huisnummer"]);}
if (empty($_POST["telefoonnummer"]))
{$telefoonErr = "Vul uw Telefoonnummer in";}
else
{$telefoonnummer = test_name($_POST["telefoonnummer"]);}
}
但是如果发生这种情况,所有字段都是空的,这不是我想要的。如果用户正确填写了他的所有信息,但忘记了他,那么他说,街道他只看到错误消息街道是必需的,但他的所有其他数据也是空的。唯一的区别是没有错误信息。
所以我想要的是,如果他被发送回带有错误消息的页面,其他信息也不应该是空的。
我希望我的问题有点清楚,否则请随时要求澄清!
提前致谢!
答案 0 :(得分:1)
所以基本上,只要向用户显示要重新输入的表单,就需要它显示他之前输入的值。这些称为粘性表单。 因此,在表单的每个输入标记中,根据值,检查$ _POST超级全局是否为空,并在其值属性中回显它。
<input type="text" name="telefoonnummer" value="<?php echo (isset($_POST['telefoonnummer']) && !empty($_POST['telefoonnummer']))?$_POST['telefoonnummer']:'';?>"/>
为了便于阅读 -
<input type="text" name="telefoonnummer" value="
<?php
echo (isset($_POST['telefoonnummer']) && !empty($_POST['telefoonnummer']))?$_POST['telefoonnummer']:'';
?>
"/>