【问题标题】:How to remove an element when using gravity forms?使用重力形式时如何删除元素?
【发布时间】:2019-04-20 01:51:40
【问题描述】:

我正在尝试从表单中删除一个小部件,以便我可以将重力表单中的“日期选择器”设为只读。我已经禁用了这个重力表单字段的文本输入,但是日历小部件提供了一个漏洞来更改日期。此日期选择器小部件可能是基于已安装的插件创建的(该插件对于我们公司的表单的正常功能是必需的)。

我想知道我的代码是否有任何问题,是否有其他代码我可以尝试删除小部件,或者这是否是重力形式的问题(如果有人非常了解该程序)。

我在谷歌浏览器的控制台中测试了以下代码,我能够成功地删除日期选择器中的日历小部件:

var element = document.getElementById('ui-datepicker-div');element.parentNode.removeChild(element);

然后在 HTML 字段中,根据重力表单的说明,我在重力表单提供的以下代码之间插入了我编写的代码:

<script>
function myCustomJs() {
    return true;
}

function myCustomJs();
</script>

它产生了这个作为当前代码:


<script>
function myCustomJs() {
    return true;

var element = document.getElementById('ui-datepicker-div');element.parentNode.removeChild(element);

}

function myCustomJs();
</script>

但不幸的是,当我运行预览时,什么都没有发生(与我在 google chrome 的开发者控制台中运行它时不同)。

【问题讨论】:

    标签: javascript-objects


    【解决方案1】:

    如果您的目标很简单,即禁用特定字段的重力形式日期选择器,我建议您使用 PHP 执行此操作。

    add_filter( 'gform_field_content_123_4', function( $content ) {
        $content = str_replace( 'datepicker', '', $content );
        return $content;
    } );
    

    将过滤器名称中的 123 更新为您的表单 ID,将 4 更新为您的日期字段 ID。

    仅供参考,这是使用 Gravity Forms Read Only 插件开箱即用处理的。

    【讨论】:

    • 不幸的是,这似乎不起作用。我意识到我认为我忽略了当您单击相关字段时出现的小部件,其代码位于单独的 java 脚本部分中,而不位于字段 ID 下方的代码中。我将不得不更深入地研究代码,以弄清楚如何仅从该字段而不是从整个网站中删除此功能。
    • 这行得通。尝试确认您已使用正确的表单和字段 ID 更新了过滤器名称,并且 sn-p 已安装在主题的 functions.php 文件中。还要澄清一下,这个 sn-p 是特定于字段的,因此它只会禁用指定字段的日期选择器(按字段 ID)。
    猜你喜欢
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2016-10-21
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多