2011-04-24 49 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