InstantClick 禁用表单提交

Posted

技术标签:

【中文标题】InstantClick 禁用表单提交【英文标题】:InstantClick disables form submit 【发布时间】:2016-08-23 07:42:04 【问题描述】:

我目前正在使用 php laravel 框架并尝试将 Instantclick 用于刀片模板,但它禁用了表单提交。 我在引导模式中有一个类似下面的表格。我可以在第一次加载时提交表单。但是,如果我移动到其他页面并返回,我将无法提交表单。

     <form id="caseNoteForm" class="width-100" method="post" action="route("updateNote",["caseNo"=>$case->case_no])">
    method_field("PUT")
      <textarea  name="customerReportNote" rows="10"  class="width-100" style="resize: vertical">$case->customerReportNote</textarea>
      <div class="width-100">
          <button class="btn btn-success pull-right margin-top-10" value="submit" type="submit">Finalize</button>
      </div>
</form>

似乎 InstantClick 也禁用了 jQuery。我该如何处理这种冲突? 我已经为我拥有的所有脚本尝试了 data-no-instant,但它仍然不起作用。 请给我一些建议

【问题讨论】:

【参考方案1】:

InstantClick 不会禁用表单。反之,它不理会表单,无论您做什么,任何表单提交都将被排除在 InstantClick 行为之外。

此外,它不会禁用 jQuery 或任何其他脚本。但是可能会发生冲突!请注意,如果您使用的是 Laravel Debugbar,它会使用 jQuery.noConflict(),这可能会导致您的 jQuery 库出现问题 - 加载另一个页面后,jQuery 不再可以作为 $jQuery 访问。解决方案之一就是避免使用noConflict()

data-no-instant 是对的 - 您应该将它用于不应在每次页面更改时加载的每个脚本,但只加载一次,这通常是大多数典型脚本。对于您需要在每次页面更改时再次加载的所有脚本,请不要使用该属性,如果它只是代码的一部分,请使用

InstantClick.on('change', function() 
  // Do what you need to do on each page change here
);

【讨论】:

以上是关于InstantClick 禁用表单提交的主要内容,如果未能解决你的问题,请参考以下文章

禁用提交,但先提交表单

表单提交后如何禁用以前禁用的选择

jquery禁用表单提交

远程表单提交禁用的输入

使用按钮单击或表单提交禁用注册按钮,两种方式都会阻止表单提交

表单提交期间禁用按钮