当表单嵌套在表中时,jQuery表单提交



表单不在表中使用jQuery提交是有原因的,还是我做错了什么?我已经在表外测试了表单提交,然后当我将其封装在表内时,它就停止了工作,尽管我添加了一个额外的parent()来弥补代码中<td>元素上方的表单移动。有人能帮我解决这个问题吗?

HTML

WITHOUT TABLE
<form action="page.cfm" method="post">
    <select class="select">
        <option>Test</option>
    </select>
</form>
WITH TABLE
<table>
    <tr>
        <form action="page.cfm" method="post">
            <td>
                <select class="select">
                    <option>Test</option>
                </select>
            </td>
        </form>
    </tr>
</table>

jQuery

WITHOUT TABLE
$(".select").on("change", function() {
    $(this).parent("form").submit();
});
WITH TABLE
$(".select").on("change", function() {
    $(this).parent().parent("form").submit();
});

表单不在表中使用jQuery提交是有原因的吗?还是我做错了什么?

您的HTML无效。使用验证器。一个窗体可以包含一整张表。表格可以完全包含在表格单元格中。表单不能只包含组成表的某些单元格。

浏览器中的错误更正将表单放在表外,因此尝试提交表单会产生意外结果。

HTML

<form action="page.cfm" method="post">
    <table>
        <tr>
            <td>
                <select class="select">
                    <option>Test</option>
                </select>
            </td>
        </tr>
    </table>
</form>

JS-

$(".select").on("change", function() {
    this.form.submit();
});

注意,对于表单元素,this.form引用包含的表单。

尝试使用$.closest()

无/有表

$(".select").on("change", function() {
    $(this).closest("form").submit();
});

最新更新