在同一页面上两次使用相同的gform

时间:2019-04-15 03:08:19

标签: php jquery wordpress gravityforms

我正在一个网站上工作,该网站需要在同一页面上多次显示相同的表单。

构建表单的插件为Gravity Forms

我已经对提供的文档进行了研究,但找不到执行此操作的任何操作。

我想我需要创建一个函数,该函数将创建的每个表单的ID存储在数组中,并对每个新表单进行比较,这样我就可以更改表单元素的ID(??? )。

有任何猜想吗?

1 个答案:

答案 0 :(得分:0)

通过在noscript标签内打印GravityForm并在需要表单时将其删除来解决该问题。

请参见示例:

var $formContainer = $(".formContainer");
function hide_form($container) {
  $container.slideUp();
  var add_noscript_tag = "<noscript>" + $container[0].innerHTML + "</noscript>";
  $container.empty();
  $container.append(add_noscript_tag);
}
function show_form($container) {
  var remove_noscript_tag = $container[0].innerHTML
    .replace("<noscript>", "")
    .replace("</noscript>", "");
  $container.empty();
  $container.append(remove_noscript_tag);
  $container.slideDown();
}
$("button").click(function() {
  var $FormContainer = $(this).next();
  if ($FormContainer.is(":visible")) {
    hide_form($FormContainer);
  } else {
    var $otherForm = $(".formContainer:visible");
    if ($otherForm.length > 0) {
      hide_form($otherForm);
    }
    show_form($FormContainer);
  }
});
button {
  margin: 20px 0;
}
.formContainer {
  display: none;
  background: #eee;
}
.formContainer form {
  padding: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <button>open form 1</button>
  <div class="formContainer">
    <noscript>
      <form>
        <input type="text" value="Name"/>
        <input type="text" value="Phone"/>
        <input type="text" value="Email"/>
      </form>
    </noscript>
  </div>
</div>
<div>
  <button>open form 2</button>
  <div class="formContainer">
    <noscript>
      <form>
        <input type="text" value="Name"/>
        <input type="text" value="Phone"/>
        <input type="text" value="Email"/>
      </form>
    </noscript>
  </div>
</div>