1

我的页面顶部有一个基本的 AJAX 表单提交功能(从教程中偷来的,因为我不能从头开始编写这些东西)。在我的页面正文中,我有一堆带有隐藏输入的表单,这些表单的值对应于我数据库中的用户 ID。

这个想法是,当您提交表单时,隐藏的值会 POST'd 到我的 PHP 页面,它会从我的 MySQL 数据库中删除具有该 ID 的用户。这一切都很简单,可能有一种更有效的方法来做到这一点,但这是我能想到的唯一方法。

无论如何,问题是我的 AJAX 函数只适用于我页面中的第一个表单。当我提交表单时,用户将从我的数据库中删除,页面刷新并且该特定表单消失。但是,如果您单击顶部表单下方的任何表单,则不会发生任何事情。这是我的 jQuery 函数:

<script type="text/javascript">


$(document).ready(function(){
    $("#myform").validate({
        debug: false,
        rules: {
            group: {required: true}, 
        },
        messages: {
            group: {required: " Field required.", loginRegex: " Invalid character."},
        },
        submitHandler: function(form) {
            $.post('process_delete_participant.php', $("#myform").serialize(), function(data) {
                $('#results').html(data);
            });
        }
    });
});


</script>

这是我页面正文中的内容:

<?php

$query = mysql_query('SELECT * FROM `Participant`');
    if (!$query)
{ 
    die('Query failure: '.mysql_error()); 
}

while($rows = mysql_fetch_array($query))
{

$fname = $rows['firstName'];
$sname = $rows['secondName'];
$id = $rows['idParticipant'];

echo "<form name='myform$id' id='myform$id' action='' method='POST'> ";
echo "<input type='hidden' name='idParticipant' id='$id' value='$id' />";
echo "$fname ";
echo "$sname ";
echo "<input type='submit' name='submit$id' id='submit$id' value='Delete' /> ";
echo "</form>";
echo "<br><br>";

}

?>

因此,其中一种形式的示例可能如下所示:

<form name='myform61' id='myform61' action='' method='POST'> 
<input type='hidden' name='idParticipant' id='61' value='61' />John Smith
<input type='submit' name='submit61' id='submit61' value='Delete' /> 
</form>

我可以想到该函数仅适用于最顶层表单的几个原因,但我不知道在函数的语法中编辑什么来解决问题。有人知道吗?

4

2 回答 2

4

示例中的选择器显式地按 ID。您可以尝试 $("[id^=myform]") 因为这匹配 id 的开头。

此外,用 $(this) 替换对 "$("#myform")" 的第二次调用以确保正确的上下文。

编辑(添加):

$("[id^=myform]").validate({
        debug: false,
        rules: {
            group: {required: true}, 
        },
        messages: {
            group: {required: " Field required.", loginRegex: " Invalid character."},
        },
        submitHandler: function(form) {
            $.post('process_delete_participant.php', $(this).serialize(), function(data) {
                $('#results').html(data);
            });
        }
    });
于 2012-06-06T13:43:45.443 回答
2
$("#myform").validate({

这只会对 ID 为“myform”的元素设置验证。

最简单的方法是在所有表单上调用它

$('form').validate({

或在名称以 myform 开头的所有表单上

$('form[id^=myform]').validate({

或在具有特定类别的所有表格上

$('form.validate').validate({
于 2012-06-06T13:45:05.303 回答