2010-08-24 154 views
3

我需要在任何表單值更改並填充表單中的所有字段時觸發表單提交事件。除了$('#date_filter_form').submit();行之外,此工作中的所有內容都可以工作。我可以.hide()表單,但由於某種原因無法提交()。文檔說submit()和trigger('submit')是一樣的,所以我不知道爲什麼它不起作用。無法使用.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> 
+0

我注意到你把提交按鈕在if條件..也許它沒有提交堂妹條件總是導致假.. – Manie 2010-08-24 04:38:07

回答

22

您的submit按鈕名爲'submit',它與form.submit方法衝突。

這是因爲瀏覽器提供快捷訪問器,以形成元件,引用該元素的屬性,被綁定到form元件,使用name屬性作爲屬性名稱。

一個名爲submit的元素將取代form.submit方法,您應該簡單地更改名稱。

還請記住,在IE中,您將遇到與id屬性相同的問題。

參見:

定義表單的HTML腳本將會從快捷存取的表單控件存在如下互動時最常見的錯誤。它是爲控件提供一個與FORM元素的現有屬性相對應的NAME(或可能是ID)。最常見的例子是類型=「submit」的INPUT元素,其名稱爲「submit」。由於命名控件可用作FORM元素的命名屬性,因此可以在屬性名稱「submit」下使用此INPUT元素。不幸的是,FORM元素已經有一個名爲「submit」的屬性,它是可以用來用腳本提交表單的提交方法。

+0

我不明白爲什麼它會發生衝突,但這確實解決了問題。 – Keyo 2010-08-24 04:44:19

+0

由於瀏覽器提供了*快捷方式訪問器*來直接通過其名稱訪問表單元素,因爲表單元素的屬性(例如, 'document.forms.date_filter_form.from_date'和'submit'具有特殊的含義,是用於觸發表單提交的方法,如果你有一個名爲''submit''的控件將會替換該方法。 – CMS 2010-08-24 04:46:39

+0

我正在使用表單生成庫來生成我的表單,並將提交按鈕命名爲submit。如何減速。我再也不會讓它命名提交按鈕提交;) – Keyo 2010-08-24 05:02:40

1

喲你從被命名爲

date_filter_form 

,但你正在尋找一個名爲

date_filter 

所以,您的驗證是不會形式通過

+1

其實我有一個div id爲「date_filter」包裹的形式,讓這不是問題。我已更新該問題以反映您的建議。 – Keyo 2010-08-24 04:41:33

相關問題