2011-04-24 50 views
0

我有一個這樣的形式...jQuery的提交()函數不引起<form>提交

<form action="/tags/3" class="edit_tag" id="edit_tag_3" method="post"> 
    <div style="margin:0;padding:0;display:inline"> 
    <input name="_method" type="hidden" value="put" /> 
    </div> 
    <input class="tag_form_field" id="tag_name" maxlength="255" name="tag[name]" size="42" type="text" value="" /> 
</form> 

而且我想提出像這樣......

$('.tag_form_field').change(function() { 
    $(event.target).closest('form').submit(); 
}); 

當我改變了輸入,表單不提交。沒有任何反應 - 沒有錯誤。

我知道選擇器和onChange()處理程序都工作。我用jQuery css()函數替換submit()來測試它們,它工作正常。

我在OS X上的Safari和Chrome中測試了它,結果相同。

任何想法?

謝謝。


我同樣的結果嘗試這些以及...

$('.tag_form_field').change(function() { 
    $(this).closest('form').submit(); 
}); 

$('.tag_form_field').change(function(e) { 
    $(e.target).closest('form').submit(); 
}); 

$('.tag_form_field').change(function() { 
    $(this).closest('form').submit(); 
}); 

$('.tag_form_field').change(function() { 
    $(this).closest('form')[0].submit(); 
}); 

回答

2

嘗試$(this).closest('form.edit_tag')[0].submit();

否則,它只是觸發窗體上的submit事件。

+0

謝謝。但我想在表單上觸發提交事件。這是目標。你能澄清嗎? – Ethan 2011-04-24 22:12:37

+0

我的代碼實際上提交了表單。 – ThiefMaster 2011-04-24 22:18:08

1

我想知道。你可以嘗試措辭這樣說:

$('.tag_form_field').change(function(e){ 
    $(e.target).closest('form.edit_tag').submit(); 
}); 

的jQuery應採取適當的封裝爲您event對象照顧,無論瀏覽器。

而且,我傾向於認爲你可能不能有一個form一個form內,所以不應該有必要專門爲「形式edit_tag類」中選擇,不應該有?大概只要$(this).closest('form')就夠了?

+2

或者簡單的'$(this)'。你說得對,嵌套形式沒有多大意義。 – ThiefMaster 2011-04-24 21:56:18

+0

好的。修改爲將其放入。 – 2011-04-24 21:57:04

+0

如何獲得嵌套表單?我想我只有一種形式。我用'$(this)','$(this)[0]'和$(event.target)'等等來試用它,見上面的更新代碼。無論如何,選擇器工作正常 - 正如前面提到的,我使用不同的jQuery函數測試了它,它正在完成它的工作。表單不會提交。 – Ethan 2011-04-24 22:15:34