表单提交时缺少数据:一张表中有多个表单

发布于 2024-11-03 10:16:44 字数 651 浏览 1 评论 0原文

我有一个复杂的屏幕,它使用一系列嵌套表和几个表单各自的ajaxSubmit

尽管我相信问题最初是由 jQuery 引起的,但我必须找出是我的 HTML 结构引起的问题。我的初始结构是:

<table>
    <tr>
        <form id="foo1" ..>
            <td><input ..></td>
            <td><input ..></td>
        </form>
    </tr>
    <tr>
        <form id="foo2" ..>
            <td><input ..></td>
            <td><input..></td>
        </form>
    </tr>
</table>

这适用于 IE8 和 Chrome 11,但不适用于 FF3.6 和 4 各自的 Safari 5.0.4。

感谢大家的帮助,很抱歉指出了错误的方向!

I have a complex screen, which uses a listed of nested tables and several forms respective ajaxSubmit.

Although I believed that the issues was initial caused by jQuery, I had to find out that my HTML structure was causing issues. My initial structure was:

<table>
    <tr>
        <form id="foo1" ..>
            <td><input ..></td>
            <td><input ..></td>
        </form>
    </tr>
    <tr>
        <form id="foo2" ..>
            <td><input ..></td>
            <td><input..></td>
        </form>
    </tr>
</table>

This works in IE8 and Chrome 11, but doesn't in FF3.6 and 4 respective Safari 5.0.4.

Thanks everyone for you help and sorry for pointing in the wrong direction!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

聚集的泪 2024-11-10 10:16:45

试试这个:

function updateCategory(id) {
    var form = $('#sc' + id);

    form.ajaxSubmit({
        data: form.serialize(),
        type: 'post',
        url: '?action=modCat',
        success: function(response) {
            $('#allCategories').html(content);
        }
    });
}

Try this:

function updateCategory(id) {
    var form = $('#sc' + id);

    form.ajaxSubmit({
        data: form.serialize(),
        type: 'post',
        url: '?action=modCat',
        success: function(response) {
            $('#allCategories').html(content);
        }
    });
}
沙与沫 2024-11-10 10:16:45

旧的 HTML 规范支持或至少容忍此行为。这在后来的实现中发生了变化。因此,应该:

a) 使用多个表(每个表单一个)

<form id="foo1">
    <table ..>
    </table>
</form>
<form id="foo2">
    <table ..>
    </table>
</form>

b) 使用 DIV 而不是表

This behavior was supported in the old HTML specifications or at least tolerated. This changed in the later implementations. Hence one should either:

a) use several tables (one per form)

<form id="foo1">
    <table ..>
    </table>
</form>
<form id="foo2">
    <table ..>
    </table>
</form>

b) use DIVs instead of tables

旧时浪漫 2024-11-10 10:16:44

我认为这是一个范围界定问题。尝试:

data: $(this).serialize(),

I believe this is a scoping issue. Try:

data: $(this).serialize(),
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文