【问题标题】:Form validation without losing Form data表单验证而不丢失表单数据
【发布时间】:2014-03-22 18:19:46
【问题描述】:

我在 PHP 中设置了一个带有验证功能的表单,效果很好。我面临的问题是一旦单击提交按钮就会发生验证。单击提交按钮时,表单值将被删除。如果出现验证错误,用户需要再次填写所有值,而不仅仅是错误一个。有没有一种方法,一旦单击提交按钮,表单值就不会被删除?

<tr>
<td><label for="email_address">Email Address:</label> <input type="text" name="email_address" id="email_address" required /></td>
</tr>
<tr>
<td><label for="password">Password:</label> <input type="password" size="25" maxlength="25" name="password" id="password" required /></td>
</tr>
<tr>
<td><label for="password2">Re-enter Password:</label> <input type="password" size="25" maxlength="25" name="password2" id="password2" required /></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Submit" /></td>
</tr>
<tr>
<?php
if(isset($_POST['submit'])){
$email_address = $_POST['email_address'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email_address)) {
?>
<td><?php echo "Enter Valid Email Address"; ?></td>
<?php
}
elseif ($password2 !== $password) {
?>
<td><?php echo "Passwords don't match"; ?></td>
<?php
}

【问题讨论】:

  • jquery 验证器是你的朋友...jqueryvalidation.org
  • @AbhikChakraborty 我们不能跳过客户端验证,并且 OP 希望在表单提交后预填充这些字段。我认为 jQuery Validator 没有回答 OP 的问题。
  • 我知道它没有,所以我没有添加这个作为答案。这只是一条让生活变得简单的建议。

标签: php forms submit


【解决方案1】:

您需要将用户条目回显到输入标签的值中。这类表单称为“粘性表单”(因为用户输入在提交后会粘在表单上)。尝试做这样的事情 -

<input type="text" name="email_address" value="<?php echo (isset($_POST['email_address']))?$_POST['email_address']:'';?>" id="email_address" required />
                             Added this ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

这基本上反映了用户在值字段中所做的最后一个条目。尝试在每个输入标签中执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多