Javascript 无法使用.submit()提交表单

Javascript 无法使用.submit()提交表单,javascript,jquery,html,Javascript,Jquery,Html,当任何表单值更改并且表单中的所有字段都已填充时,我需要触发表单提交事件。除了$(“#date_filter_form”)之外,本文档中的所有内容都有效行。我可以隐藏()表单,但由于某种原因无法提交()。文档中说submit()与trigger('submit')相同,所以我不明白为什么它不起作用 $('#date_filter_form input[type="text"]').change(function() { var from_val = $('#date_filter_form

当任何表单值更改并且表单中的所有字段都已填充时,我需要触发表单提交事件。除了
$(“#date_filter_form”)之外,本文档中的所有内容都有效行。我可以隐藏()表单,但由于某种原因无法提交()。文档中说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:


从…起
到
您的发件人被命名为

date_filter_form
但是您正在寻找一个名为

date_filter 

因此,您的验证不会通过您的
提交
按钮名为
'submit'
,它与
表单.submit方法冲突

这是因为浏览器提供了表单元素的快捷访问器,引用元素的属性被绑定到
表单
元素,使用
名称
属性作为属性名

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

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

另见:

定义脚本将与之交互的表单HTML时,最常见的错误是表单控件的快捷方式访问器的存在。它是给控件一个与表单元素的现有属性相对应的名称(或者可能是ID)。最常见的例子是一个名为“submit”的type=“submit”输入元素。由于命名控件作为表单元素的命名属性可用,因此此输入元素在属性名“submit”下可用。不幸的是表单元素已经有了一个名为“submit”的属性,可以使用submit方法通过脚本提交表单


我注意到您将submit按钮置于if状态。。可能它没有提交,因为条件总是导致false。事实上,我有一个div,id=“date\u filter”包装表单,所以这不是问题所在。不过,我已经更新了该问题以反映您的建议。我不清楚为什么会发生冲突,但这确实解决了问题。之所以会发生冲突,是因为浏览器提供了快捷方式访问器,可以直接按表单元素的名称访问表单元素,作为表单元素的属性,例如,
document.forms.date\u filter\u form.from\u date
submit
具有特殊含义,是用于触发表单提交的方法,如果您有名为
'submit'的控件,则
将替换该方法。我正在使用表单生成库生成表单,它将提交按钮命名为submit。多么迟钝啊。我再也不会让它命名为submit按钮submit;)
date_filter