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

时间:2013-07-29 10:27:21

标签: jquery html forms

有没有理由为什么表单不会在表格中使用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();
});

3 个答案:

答案 0 :(得分:3)

  

有没有理由为什么表单不会在表格中使用jQuery提交,或者我只是做错了什么?

您的HTML无效。使用a validator。表单可以包含整个表。表单可以完全包含在表格单元格中。表单不能只包含构成表的某些单元格。

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

答案 1 :(得分:2)

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引用包含的表单。

答案 2 :(得分:0)

尝试使用$.closest()

WITHOUT / WITH TABLE

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