【问题标题】:Preventing a form from submitting with jQuery not working [closed]防止使用jQuery提交表单不起作用[关闭]
【发布时间】:2015-02-21 17:35:49
【问题描述】:

这是我的简单表格:

<form accept-charset="utf-8" class="form-vertical" id="template" autocomplete="off" name="template" method="POST" action="http://test.dev/templates">
    ...various inputs and HTML here...
    <input class="btn btn-primary" type="submit" value="Update">
</form>

这是我的 JS,它不会阻止表单提交:

<script type="text/javascript">
    (function ($) {
        'use strict';

        $("form#template").on('submit.template', function (e) {
            e.preventDefault();
            console.debug(e.relatedTarget);
            return false;
        });
    }(jQuery));
</script>

根据过去的经验,这应该会阻止在单击 Update 时提交表单。感觉好像我错过了一些非常明显的东西。这里会发生什么?

jQuery 2.1.1

【问题讨论】:

  • 如何调试它?提交处理程序是否被解雇?也许您只需要使用文档就绪处理程序作为包装器,例如:jQuery(function($){...}); FYI,您的 return 语句在这里没用
  • 脚本很可能没有被执行。不同的原因,但由于这是一个内联脚本,它可能与 Content-Security-Policy 标头冲突。这应该显示在浏览器控制台中。
  • @j08691 在代码块的最后,经过多次检查,我打算用JS提交表单。命名空间允许我第二次关闭提交检查以防止循环:$("form#template").off('submit.template').submit();
  • @arkascha No Content-Security-Policy 通知。
  • @eComEvo SO FORM 是动态添加到 DOM 中的吗?您为什么不发布相关链接或在线示例以检查您的问题???

标签: javascript jquery laravel blade


【解决方案1】:

使用.each() 遍历所有表单名称,发现该表单名为templates(复数),尽管在许多重新加载之前我将其更改为template。模板系统中的某些东西实际上正在缓存那部分代码,清除模板缓存解决了这个问题。

所有 JS 现在都可以正常工作,无需修改。

【讨论】:

  • 这个话题可能应该被关闭或删除,因为它最终没有成为真正的 JS 或 jQuery 问题。
猜你喜欢
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多