【问题标题】:Cannot submit form with .submit()无法使用 .submit() 提交表单
【发布时间】:2023-03-12 01:32:01
【问题描述】:

当任何表单值更改并且表单中的所有字段都已填写时,我需要触发表单提交事件。除了$('#date_filter_form').submit(); 行之外,这里的所有内容都有效。我可以 .hide() 表单,但由于某种原因不能 submit() 它。文档说 submit() 与 trigger('submit') 相同,所以我不知道为什么它不起作用。

$('#date_filter_form input[type="text"]').change(function() {
    var from_val = $('#date_filter_form #from_date').val();
    var to_val = $('#date_filter_form #to_date').val();
    if(from_val != '' &&  to_val != '') {
        $('#date_filter_form').submit();
    }
});

HTML:

<form method="post" id="date_filter_form" name="date_filter_form" action="">
   <label class="left required" for="from_date">From</label>
   <input type="text" id="from_date" class="datepicker hasDatepicker" value="" name="from_date">
   <label class="left required" for="to_date">to</label>
   <input type="text" id="to_date" class="datepicker hasDatepicker" value="" name="to_date">

    <input type="hidden" value="" name="from_date_db">
    <input type="hidden" value="" name="to_date_db">

    <input type="submit" id="submit" class="button" value="Show results" name="submit">
</form>

【问题讨论】:

  • 我注意到您将提交按钮置于 if 条件下.. 也许它没有提交因为条件总是导致 false..

标签: javascript jquery html


【解决方案1】:

您的submit 按钮被命名为'submit',它与form.submit 方法冲突。

这是因为浏览器提供快捷访问器来形成元素,引用元素的属性绑定到form 元素,使用name 属性作为属性名称。 p>

名为submit 的元素将替换form.submit 方法,您只需更改名称即可。

还要记住,在 IE 中,id 属性也会出现同样的问题。

另见:

定义脚本将与之交互的表单 HTML 时最常见的错误是表单控件的快捷方式访问器的存在。它是为控件提供与 FORM 元素的现有属性相对应的名称(或可能的 ID)。最常见的示例是类型为“submit”的 INPUT 元素,名称为“submit”。因为命名控件作为 FORM 元素的命名属性可用,所以该 INPUT 元素在属性名称“submit”下可用。不幸的是,FORM 元素已经有一个名为“submit”的属性,它是可用于通过脚本提交表单的 submit 方法。

【讨论】:

  • 我不明白为什么会发生冲突,但这确实解决了问题。
  • 它会发生冲突,因为浏览器提供了 快捷方式访问器 以直接通过表单元素的名称访问表单元素,作为表单元素的属性,例如document.forms.date_filter_form.from_date和submit有一个特殊的含义,是用来触发表单提交的方法,如果你有一个名为'submit'的控件会替换掉这个方法。
  • 我正在使用表单生成库来生成我的表单,并将提交按钮命名为提交。多么迟钝。我再也不会让它命名一个提交按钮提交;)
【解决方案2】:

你的发件人被命名

date_filter_form

但您正在寻找一个名为

的表单
date_filter 

所以你的验证不会通过

【讨论】:

  • 实际上我有一个带有 id="date_filter" 的 div 包装表单,所以这不是问题。不过,我已经更新了问题以反映您的建议。
猜你喜欢
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多