我在页面的头部有一个基本的AJAX表单提交功能(从教程中窃取,因为我无法从头开始编写这些东西)。在我的页面正文中,我有一堆隐藏输入的表单,其值与我的数据库中的用户ID相对应。
这个想法是,当你提交一个表单时,隐藏的值会POST到我的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>
我可以想到这个函数只适用于最顶层表单的几个原因,但我不知道在我的函数语法中编辑什么来解决问题。有人知道吗?
答案 0 :(得分: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);
});
}
});
答案 1 :(得分:2)
$("#myform").validate({
这仅对ID为'myform'的元素设置验证。
最简单的方法是在所有表格上调用它
$('form').validate({
或所有名称以myform开头的表单
$('form[id^=myform]').validate({
或具有特定类的所有表单
$('form.validate').validate({