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