【问题标题】:Unable to generate id for dynamically added table rows - Django dynamic formset无法为动态添加的表行生成 id - Django 动态表单集
【发布时间】:2020-03-21 02:42:04
【问题描述】:

我正在尝试使用为表格中的子字段添加行的选项来实现 Django 内联表单集(具有父子场景)。

为此,我正在使用 [Django 动态表单集][1],就默认表单布局以及在运行时添加新行而言,它正在工作。我也可以保存和编辑数据,即使添加了新行。然而,令我沮丧的是,没有生成新添加的行元素的 id(在“查看源代码”中查看时)——实际上 根本没有对新添加的元素的引用。考虑到该插件非常“old”,而且从外观上看,没有太多活动源页面。 (我发现一位用户询问该插件是否可以与 Django 2.0 一起使用!

我想要单个字段元素的 id 的原因是,我需要在提交表单之前使用 jQuery 执行涉及包含的值的计算。没有 id,我无法获取输入字段的值,我被卡住了。为了克服这个问题,我尝试使用包含在我的模板中的forloop 来生成 id,但这仅适用于 默认(初始)行数。我不知道如何生成 id 的发布页面加载 - 我试图解决它,但我不确定这是否可以在页面已经加载后动态实现。

是否有可能在页面加载后生成 id(使用 jQuery 或任何其他方式)?

【问题讨论】:

    标签: jquery django django-templates inline-formset


    【解决方案1】:

    根据docs,看起来您可以定义一个在添加新表单时将调用的函数。在其中,您可以添加一个 id 或类,或者根据您的业务逻辑,进行实际计算。

        $('#myFormsetTable tbody tr').formset({
            added: function(row) {}
        });
    

    【讨论】:

    • 按照您(和文档)的建议,我尝试添加 formset 选项(“已添加”)。请检查我的编辑(主要问题中的编辑 1)。您能否调查一下并澄清我做错了什么?
    • 您使用的不是有效的 javascript 语法。应该是added: function(row) {roAdded(row)}
    • 我已经替换了代码行 'add: 'function(roAdded(row))' ' WITH ' added: function(row) {roAdded(row)} '。 但是我无法使用该功能('roAdded'),即没有收到任何警报。
    • 那会发生什么?
    • 绝对没有。行正在按预期添加,但(我认为)added opt 应该调用函数 roAdded(row) 并且浏览器应该给出一个 alert ,没有发生
    猜你喜欢
    • 2019-11-27
    • 2020-06-30
    • 2018-08-26
    • 2020-11-21
    • 2020-01-22
    • 2015-11-23
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多