【问题标题】:How can I save data in form fields if validation don't pass?如果验证未通过,如何在表单字段中保存数据?
【发布时间】:2019-09-10 16:16:06
【问题描述】:

我有一个复杂的表单 (CActiveForm),它包含 4 个问题,带有多个复选框列表和单选按钮。当用户访问页面时,只有第一个问题可见。只有在上一个问题(jquery)中至少选中了一个复选框时,才会出现下一个问题。

现在,如果我提交表单,但其验证失败,则表单上方会显示错误消息,所有复选框都未选中,并且除了第一个问题之外的所有问题都变得不可见。

如果表单验证失败,是否有一种简单的方法可以保存选中的复选框并显示所有问题?

也许 yii1 有一些标准的方法来解决这个问题?还是唯一的解决方案是使用 Ajax 验证?

【问题讨论】:

  • 您必须发布一些代码才能获得帮助。向我们展示您的观点和验证设置。隐藏的输入将触发验证,因此您必须设置规则才能使其停止。
  • 已经通过添加jquery函数来检查表单字段到表单提交按钮来解决这个问题。如果函数返回 true,表单将提交。不要认为这是正确的方法,但它确实有效。

标签: jquery validation yii


【解决方案1】:

我建议你使用依赖下拉列表ask show here 或者如果你使用 yii2 see here

【讨论】:

  • 感谢您的回复。不幸的是,我应该在这个项目中使用 Yii1,并且会有复选框列表而不是选择字段。
【解决方案2】:

您可以使用一些本地存储,通过 PHP 中的 SESSION 变量或 Javascript 中的 indexDB 来在每次提交时存储表单值,然后再进行验证。然后,如果验证失败,请使用保存的表单数据重新填写表单。

【讨论】:

  • 感谢您的回复。问题是因为表单由多个复选框列表组成,并且每个下一个列表只有在用户之前检查时才会出现。因此,如果我提交表单,所有复选框都将变为未选中状态,并且除第一个之外的所有复选框列表都将消失。
  • 我明白你的意思。我认为使用 indexDB 仍然可以工作。如果您在每个表单操作(选中一个框等)上使用事件侦听器并存储每个复选框的状态以及哪些列表对 JSON 对象可见,然后将该状态存储在 indexDB 中,那么您可以在页面加载时运行用于检查状态是否已保存在 indexDB 中的快速函数,如果是,则加载它以将状态恢复到每个复选框和每个列表的可见性。也就是说,如果我正确理解了问题。
  • 是的,这个变种会起作用,但我认为可能有 ajax 验证规则,不会重置表单。
猜你喜欢
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2022-01-17
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多