1

HTML:

<form method="post" action="action=save&amp;id=239" id="save-form">
    <input type="text" value="0" name="views" /> <input type="submit" value="save plz" name="save" />
</form>
<form method="post" action="action=save&amp;id=862" id="save-form">
    <input type="text" value="3" name="views" /> <input type="submit" value="save plz" name="save" />
</form>
<form method="post" action="action=save&amp;id=12" id="save-form">
    <input type="text" value="2" name="views" /> <input type="submit" value="save plz" name="save" />
</form>

PHP:

if ($_GET["action"] == "save") {
    if (isset($_GET["id"]) && preg_match("/^\d+$/", $_GET["id"])) {
        $id = $_GET["id"];
        // update view count here
    }
}

jQuery:

$('#save-form').ajaxForm({
    beforeSubmit: function() {      
        //
    },
    success: function(data) {
        //
    }
});

我正在使用这个插件:http: //jquery.malsup.com/form/#html

我现在意识到我所有的表单都共享相同的 id save-form。此代码适用于save-form. 但我希望它适用于所有人。这让我想到了我的主要问题:

如何修改我当前的 jQuery/HTML 来处理每个单独的表单。

理想情况下,我会有一个唯一的 id,例如save-form-239and save-form-862。但我不想写$('#save-form-239')$('#save-form-262');对于每一种形式..我能做什么?

4

2 回答 2

5

即使我确定 dbaseman 的解决方案可以正常工作,通常最好避免使用具有相同 ID 的多个元素,因为根据 HTML 规范它是无效的。

一个更清洁的解决方案是使用,class="save-form"而不是id="save-form",然后做$('.save-form').ajaxForm(...);

于 2012-06-11T08:50:21.767 回答
1

您可以像这样编写选择器来获取单独的表单:

$('[id=save-form]').eq(0);

(使用显式属性选择器而不是“#”快捷方式允许 JQuery 提取具有匹配 ID 的所有元素)

我想你会想要这样的东西来处理每个表格:

$('[id=save-form]').each(function() {
    $(this).ajaxForm({
        beforeSubmit: function() {      
            //
        },
        success: function(data) {
            //
        }
    });
});
于 2012-06-11T08:20:48.907 回答