Codeigniter set_select

时间:2010-12-23 15:17:57

标签: php codeigniter select validation

道歉我此时无法发布任何代码因为我离开了我的办公桌,但我会尽可能清楚地解释我的问题,希望有人可以提供帮助!

我有一个提交到控制器中的方法的长格式。为了使用户更友好,我将表单拆分为多个部分。每个部分都有一个隐藏字段作为标志。表单提交的方法由测试这些标志的条件组成。如果找到标志,则可以显示表单的下一部分。我也可以分段收集数据,而不是一次性处理整个数据。

当我尝试使用set_select方法为选择菜单设置默认值时,出现了问题。该方法是CI系统form_validation库的一部分。如果将可选的第三个参数作为true传递给方法,则应将该值设置为默认值。但是,这仅在先前未运行form_validation时才有效。这是完全合理的,因为假设只有在第一次看到表格时才需要默认值。在任何提交之前,因此在任何发布数据之前。

当然,这不是我的情况。如果我只是清空post数组,那么就会失败set_select函数的点,因为表单上方的任何选择菜单将不再能够设置为它们的最后一个值。

有人能想到一个好的解决方案吗?我知道使用AJAX会更容易,但我想确保每个人都能获得最佳体验,无论他们是否决定使用JavaScript。

3 个答案:

答案 0 :(得分:0)

就个人而言,我会使用AJAX将表单分解为3个部分,每次都通过AJAX提交。

那么对于非JavaScript用户(少数用户),我只会完整地显示表单,并正常处理。

打破形式听起来像“功能”而不是功能。这意味着javascript用户将能够利用打破表单的“功能”,而非JavaScript用户仍然可以毫不费力地完成提交信息的“功能”。

答案 1 :(得分:0)

这样做是怎么回事:

  • 用3种不同的方法将其分成3种不同的形式
  • 在每个方法上,使用session设置开关以检查当前的格式
  • 在每个表单上添加表单验证并相应地检查
  • 如果这3个表单是OK,那么您可以继续进行任何您想要的过程
  • 如果某个表单失败,则会加载以前失败的表单

答案 2 :(得分:0)

我已经决定使用set_select可能不是我的最佳选择,所以我在我的视图文件中添加了一些代码,这些代码将针对每个案例执行此操作,而不是尝试使用泛型函数。 不理想,但正在发挥作用!