有没有更好的jQuery解决schemethis.form.submit();?

我想触发当前元素所在表单的提交事件。我知道的一个方法有时是:

this.form.submit(); 

我想知道是否有一个更好的解决scheme,可能使用jQuery,因为我不是100%确定的方法在每个浏览器的作品。

编辑:

我的情况如下:

 <form method="get"> <p><label>Field Label <select onchange="this.form.submit();"> <option value="blah">Blah</option> .... </select></label> </p> </form> 

我希望能够在<select>变化上提交表单。

我正在寻找的是一种解决scheme,可以在任何forms的任何领域工作,而不必知道表单上的ID或名称。 $('form:first')$('form')将不起作用,因为表单可能是页面上的第三个。 此外,我已经在网站上使用jQuery,所以使用一点jQuery是没有什么大不了的。

那么,有没有办法让jQuery检索input / select / textarea所在的表单呢?

我想你在找什么是这样的:

 $(field).closest("form").submit(); 

例如,要处理onchange事件,你可以这样做:

 $(select your fields here).change(function() { $(this).closest("form").submit(); }); 

如果出于某种原因,您不使用jQuery 1.3或更高版本,则可以调用parents而不是closest

 this.form.submit(); 

这可能是你最好的select。 特别是如果你还没有在你的项目中使用jQuery,那么就不需要为了这个目的而添加它(或者任何其他的JS库)。

你总是可以使用JQuery来实现你的form.submit,但是它可能只是调用同样的东西:

 $("form").submit(); // probably able to affect multiple forms (good or bad) // or you can address it by ID $("#yourFormId").submit(); 

您也可以将函数附加到提交事件,但这是一个不同的概念。

与Matthew的回答类似,我只是发现你可以做到以下几点:

 $(this).closest('form').submit(); 

错误:使用父function的问题是该字段需要立即在表单中工作(不在tds,标签等内)。

我纠正了:父母s (也有s)也有效。 Thxs Paolo指出了这一点。

我发现使用jQuery最好的解决scheme是

 $(this.form).submit() 

使用这个语句jquery插件(例如jquery表单插件 )工作正常,jquery DOM遍历开销最小化。

你的问题有点令人困惑,因为你不解释“当前因素”是什么意思。

如果你在一个页面上有多种forms的input元素和一个“提交”types的button,那么在填写任何字段时点击“回车”将触发提交表单。 那里你不需要任何Javascript。

但是,如果您在表单上有多个“提交”button而没有其他input(例如表格中的“编辑行”和/或“删除行”button),那么您所发布的行就可以成为这样做的途径。

另一种方法(不需要Javascript)可以给所有的button赋予不同的值(types为“submit”)。 喜欢这个:

 <form action="..."> <input type="hidden" name="rowId" value="..."> <button type="submit" name="myaction" value="edit">Edit</button> <button type="submit" name="myaction" value="delete">Delete</button> </form> 

当你点击一个button时,只有包含该button的表单将被提交,并且只有你点击的button的值将被发送(沿着其他input值)。

然后在服务器上,您只需读取variables“myaction”的值,然后决定如何操作。

在JQuery中,你可以调用

 $("form:first").trigger("submit") 

不知道这是否好多了。 我认为form.submit(); 很普遍。

 <form method="get"> <p><label>Field Label <select onchange="this.form.submit();"> <option value="blah">Blah</option> .... </select> </label> </p> **<!-- <input name="submit" type="submit" /> // name="submit_new_name" -->** </form> <!-- this.form.submit == this.form.elements['submit']; -->