有没有更好的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']; -->