2016-04-18 131 views
2

我已經看過這裏的幾個問題,並跟着他們,但我還沒有取得任何成功。我希望在更改選擇時提交表單。我有這樣的:jQuery提交表單在選擇更改

HTML:

<form id="form1_currency" action="/" method="post"> 
    <select id="form1_currency" name="currency" class="autosubmit"><option value="47">GBP</option><option value="142">USD</option><option value="44">EUR</option></select> 
    <input id="form1_submit" name="submit" value="OK!" type="submit" /><input type="hidden" name="cms-form" value="Y3VycmVuY3k6cGVyY2hfc2hvcDovdGVtcGxhdGVzL3Nob3AvY3VycmVuY2llcy9jdXJyZW5jeV9mb3JtLmh0bWw6MTQ2MDk3NDgwNg==" /> 
</form> 

JQUERY:

$('.autosubmit').on('change', function(){ 
    console.log('Option Changed'); 
    $(this).parent('form').submit(); 
}); 

但是形式不提交。筆是在這裏:

http://codepen.io/mikehdesign/pen/ZWomjv

幫助非常感謝!

+0

這太奇怪了!代碼看起來一切正常,如果我放置一個事件處理程序的表單提交併顯示警告它也可以。除了表格沒有提交。 –

+0

使用下面的代碼--- $(this).siblings('input [type =「submit」]')。click(); $(this).parent('form')。submit(); – krishna

+0

@krishna - 請不要在評論中回答問題。評論意見,答案是答案。 – Quentin

回答

2

更改按鈕的「提交」名稱。這會導致問題。

見jQuery的提交()文檔:

形式及其子元素不應該使用輸入名稱或ID的 與窗體的屬性,如提交,長度或方法衝突。 名稱衝突可能導致令人困惑的失敗。有關 規則的完整列表並檢查您的標記是否存在這些問題,請參閱DOMLint。

所以,只要將名稱屬性值從submit更改爲其他任何東西。在上面的代碼Working Fiddle

變化的部分就是這個

<input id="form1_submit" name="something" value="OK!" type="submit" />

+0

爲什麼要保持提交按鈕?這一點是允許在這個表單上自動提交,而表單中唯一的元素是貨幣選擇 - 因此提交按鈕的作用是多餘的 - 我刪除它並讓表單工作 - 儘管沒有你的好描述和因爲它已經downvoted - 但我說刪除totalis中的按鈕,並允許autosubmission工作。 – gavgrif

+0

@gavgrif當你僅僅因爲它有一個'name =「submit」'而刪除提交按鈕時,表單纔會起作用,這將與表單提交發生衝突。解決方案是有按鈕,也有jquery提交工作,這就是答案。如果OP希望他的submit按鈕和jquery提交工作,會怎樣?您的解決方案比解決方案更適用於解決方法。 –

+1

是 - 我想你是對的 - 我喜歡你的回答/描述。有道理。帖子已刪除 - 謝謝 – gavgrif

-2

你可以試試這個。

$('form').submit(); 
+0

現有的代碼已經找到了表單。這是一個不同的,可以說更糟糕的(因爲它不能處理同一頁上的多個表單),但它有同樣的問題。 – Quentin