香草PHP中的选项卡或多阶段表单

时间:2018-01-11 15:25:57

标签: php twitter-bootstrap validation twitter-bootstrap-3

背景故事

我在页面上有一个非常长的表单,它有大约20到30个字段。目前,我正在使用Bootstrap框架的tab元素将表单拆分为多个选项卡,以便用户更容易理解整体体验。

这在某种程度上有效,我有一个跨多个标签的表单,最后的标签有一个提交按钮。

问题

当你到达表格的最后,如果你错过了任何你需要知道你错过的东西,问题是,因为你在另一个标签中,你怎么看到另一个中的错误标签?

我尝试了免费提供的Bootstrap Validator的Git Hub存储库,该存储库适用于单页表单,但不适用于选项卡表单。

收集一系列错误并将其显示在相关标签中的最佳方法是,我是否有权强迫用户返回其他标签以更正错误?

或者我咬紧牙关,只有一个包含多个页面并在会话中存储数据的表单?

1 个答案:

答案 0 :(得分:0)

如何根据页面更改元素类型?如果你可以重写URL以将它们全部发送到同一个脚本,它可能看起来像下面的例子。

这可能是第一次通过" 自学PHP 书的解决方案将在展示更复杂的内容之前展示。

优点:

  • 易于掌握

缺点:

  • 如果您需要图像,则会中断。
  • 不是最糟糕的事。
  • 您认为,您可能有很多逻辑。
    • 如果你不这样做,那是因为你已经很好地解决了这样的问题,但是你可能会采取更加苛刻的方法。

例:

<?php

$firstName = true === isset($_POST['first_name']) ? $_POST['first_name'] : '';

// If we're on page 1, show. If not, keep the data persistent in the HTML, but hide it.
<?php if ($page === 1) : ?>
    <input type="text" name="first_name" value="<?php echo $firstName; ?>" />
<?php else : ?>
    <input type="hidden" name="first_name" value="<?php echo $firstName; ?>" />
<?php endif; ?>