是否有更好的jQuery解决方案this.form.submit();?

Dar*_*ein 44 javascript forms jquery submit

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

this.form.submit();
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更好的解决方案,可能使用jQuery,因为我不是100%确定方法适用于每个浏览器.

编辑:

我的情况如下:

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

我希望能够提交更改表格<select>.

我正在寻找的解决方案适用于任何形式的任何领域,而不知道表单上的ID或名称.$('form:first')并且$('form')不起作用,因为表单可能是页面上的第三个.此外,我已经在网站上使用jQuery,所以使用一些jQuery并不是什么大问题.

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

Mat*_*ley 106

我认为你要找的是这样的:

$(field).closest("form").submit();
Run Code Online (Sandbox Code Playgroud)

例如,要处理onchange事件,您将拥有:

$(select your fields here).change(function() {
    $(this).closest("form").submit();
});
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因你没有使用jQuery 1.3或更高版本,你可以调用parents而不是closest.

  • 使用最接近("形式")而不是父母("形式").parents()获取作为表单的元素的所有父元素,nearest()停止吃第一个作为元素父元素的形式 (3认同)
  • @TeKapa:谢谢.在我回答问题一周后,jQuery 1.3(添加了"最接近的"函数)出现了. (2认同)

Bea*_*sen 25

this.form.submit();
Run Code Online (Sandbox Code Playgroud)

这可能是你最好的选择.特别是如果您尚未在项目中使用jQuery,则无需为此目的添加它(或任何其他JS库).


小智 5

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

$(this.form).submit()
Run Code Online (Sandbox Code Playgroud)

使用此语句 jquery 插件(例如jquery 表单插件)可以正常工作,并且 jquery DOM 遍历开销被最小化。