jquery - 由于某些验证而保存失败时,动态添加的表单字段会丢失

标签 jquery cakephp dom

有两个模型,假设 A 和 B 具有 A hasMany B 关系。用户在创建 A 时可以关联任意数量的 B 行。应用程序允许用户使用 JQuery 动态添加和删除 B 行,更具体地说,按照此示例 - http://jsfiddle.net/mjaric/tfFLt/

一切都很好,除非保存(使用 saveAll)由于服务器端验证而失败。在这种情况下,页面在提交时刷新,所有动态添加的字段都会丢失,用户必须从头开始重新创建所有行。

有没有什么办法,使用 JQuery 动态添加的字段都不会丢失并保留其旧值(与 Ca​​ke 的默认行为相同)?可能发出 Ajax 请求是一种选择,因此页面不会在服务器端验证失败时重新加载,但对我来说这不是一种选择,因为表单也有一个文件上传,而且据我所知,Ajax 请求不支持文件 trsnafer?

最佳答案

正如所指出的,在验证失败时渲染 View 时,您可以静态地放置所有字段。

无法通过 AJAX 上传文件,因为无法从 JS 读取文件。不过,有一个完善的解决方法:您可以将表单暂时放入不可见的 iframe 中,以 native 方式提交,然后触发回调,就像 AJAX 响应一样。

jQuery form plugin非常擅长以 AJAX 方式提交表单,并且在遇到文件字段时透明地执行后者。

关于jquery - 由于某些验证而保存失败时,动态添加的表单字段会丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9587830/

相关文章:

javascript - jQuery:嵌套框架集中的访问框架

javascript - 如何使用 jspdf-autotable 打印四个不同的表格

php - CakePHP 3 : Accessing trait from controller

php - 为什么 CakePHP 不支持多列的外键?

JavaScript 和 DOM 按钮事件处理

javascript - 为什么我的文本字段没有添加到页面中?

javascript - 如何在 JavaScript 中添加/删除类?

jquery - 使用 JQuery 一段时间后自动关闭窗口

javascript - 使用 jquery AJAX 提交表单

cakephp - 如何重定向到同一页面