使用 jQuery 替换重力表单管理中字符串"form"的所有实例



我被要求将单词"form"的所有实例更改为"block"作为我们正在开发的WordPress应用程序的一部分。更换需要发生在整个重力形式的管理部分。因为重力表单没有一个简单的方法来改变这没有编辑插件,我选择使用jQuery来替换所有的实例在dom加载

我面临的问题是,重力表单动态地将内联javascript放入html的主体。内联/w显示页面内容。所以当我运行例如:

jQuery("#wpbody-content").html(jQuery("#wpbody-content").html().replace(/Form/gi, 'Block'));

它最终会替换那些内联javascript插入(例如使用ajax创建新表单)中单词"form"的重要实例。

我想知道是否有人有任何想法,我如何做一个词的"形式"的所有实例的替换,实际上是html,而不是任何内联javascript的一部分?

I'm trying to get this:

<div class="#wpbody-content">
    <div class="setting-row">
        <label for="new_form_description">Form Description</label><br>
        <textarea class="regular-text" id="new_form_description" tabindex="9001"></textarea>
    </div>
    <script type="text/javascript">
            jQuery(document).ready(function($) {
                 loadNewFormModal();
                function loadNewFormModal() {
                    resetNewFormModal();
                    tb_show('Create a New Form', '#TB_inline?width=375&amp;inlineId=gf_new_form_modal');
                    jQuery('#new_form_title').focus();
                    return false;
                }
            }
    </script>
</div>

变成:

<div class="#wpbody-content">
    <div class="setting-row">
        <label for="new_form_description">Module Description</label><br>
        <textarea class="regular-text" id="new_form_description" tabindex="9001"></textarea>
    </div>
    <script type="text/javascript">
            jQuery(document).ready(function($) {
                 loadNewFormModal();
                function loadNewFormModal() {
                    resetNewFormModal();
                    tb_show('Create a New Form', '#TB_inline?width=375&amp;inlineId=gf_new_form_modal');
                    jQuery('#new_form_title').focus();
                    return false;
                }
            }
    </script>
</div>

而不是this:

<div class="#wpbody-content">
    <div class="setting-row">
        <label for="new_Block_description">Block Description</label><br>
        <textarea class="regular-text" id="new_Block_description" tabindex="9001"></textarea>
    </div>
    <script type="text/javascript">
            jQuery(document).ready(function($) {
                 loadNewBlockModal();
                function loadNewBlockModal() {
                    resetNewBlockModal();
                    tb_show('Create a New Block', '#TB_inline?width=375&amp;inlineId=gf_new_Block_modal');
                    jQuery('#new_Block_title').focus();
                    return false;
                }
            }
    </script>
</div>

您可以这样做:

  • 在所有内容中搜索所需的单词(形式)
  • 检查父字是否为SCRIPT
  • 用替换后的单词
  • 修改该标签的内容

jsfiddle演示
$(function(){
    $('*:contains("Form")').each(function(){
        if($(this).children().length < 1){
            if($(this).prop("tagName") != "SCRIPT"){
                //$(this).html().replace(/Form/gi, 'Block');
                $(this).html($(this).html().replace(/Form/gi,"Block" ));
            }
        }
    });
});

最新更新