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

时间:2010-08-24 04:33:33

标签: javascript jquery html

当任何表单值更改并填写表单中的所有字段时,我需要触发表单提交事件。除$('#date_filter_form').submit();行之外,其中的所有内容都有效。我可以.hide()表单,但由于某种原因不能提交()它。文档说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>

2 个答案:

答案 0 :(得分:22)

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

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

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

另请注意,在IE中,id属性会遇到同样的问题。

另见:

  

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

答案 1 :(得分:1)

你的名字来自

date_filter_form

但您正在寻找名为

的表单
date_filter 

所以你的验证不会通过