我正在使用ajax来验证我的表单,但是我的表单在php的while循环中,并且我的请求ajax只在我的第一个表单上工作。
我的代码:
Ajax:
<script type="text/javascript">
$(document).ready(function() {
$('#form_entourage').on('submit', function() {
var nom = $('#entourage_nom_1').val();
var prenom = $('#entourage_prenom_1').val();
if(nom == '' || prenom == '') {
alert('Les champs doivent êtres remplis');
} else {
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: $(this).serialize(),
dataType: 'json',
success: function(json) {
if(json.reponse == 'ok') {
alert('Tout est bon');
} else {
alert(''+ json.reponse);
}
}
});
}
return false;
});
});
</script>PHP表单:使用我的循环while和我的ajax只处理1个表单。例如:当我有3个成员时,我的ajax验证只在第一个成员上工作,在我的第二个成员上,我重定向到我的php验证上。
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf ("
<h3>Membre ".$numero_membre."</h3>");
$numero_membre = $numero_membre+1;
printf ("
<form class='form-horizontal' id='form_entourage' method='post' action='modif/mod_entourage.php' style='height: 670px;'>
<span class='span5 control-group'>
<label for='entourage_nom_1'>Nom</label>
<input class='span5' type='text' name='entourage_nom_1' value='".$row["nom"]."' >
<input type='hidden' name='id_entourage' value='".$row["id_entourage"]."' >
</span>
<span class='span5 control-group'>
<label for='entourage_prenom_1'>Prénom</label>
<input class='span5' type='text' name='entourage_prenom_1' value='".$row["prenom"]."' >
</span>
<span class='span5 control-group'>
<input type='submit' name='mod_entourage' id='mod_entourage' class='btn btn-primary pull-right' value='Modifier' /></span>
</form>
<div class='clear'></div>
");
}有人能帮帮我吗?
发布于 2013-06-07 17:38:02
您的所有表单都使用相同的id。在表单ids中追加计数器变量。它肯定会为你工作。您的表单id可以如下所示
<form id="form_entourage_ 1" data-idval="1" .. >..Similarly change id for other elements</form>
<form id="form_entourage_ 2" data-idval="2" .. >..</form>
<form id="form_entourage_ 3" data-idval="3" .. >..</form>Jquery :-
$("[id^='form_entourage']").on('submit', function() {
var clicked_id = $(this).data('idval');
var nom = $('#entourage_nom_'+clicked_id).val();
var prenom = $('#entourage_prenom_'+clicked_id).val();
...........
...........
});发布于 2013-06-07 17:38:03
您的表单只使用了一个id,这就是它只在第一次工作的原因。
发布于 2013-08-08 00:10:12
好的,这个问题已经回答了,但我认为使用类会做得更好(不需要额外的标记,不需要XD,不需要数字,XD):
$("form.AJAX").on('submit', function() {
// Catching the DOM element which trigger the event
var $form = $(this);
// Now, from the form which trigger the submit event, take the values
var nom = $form.find('input[name="entourage_nom"]').val();
var prenom = $form.find('input[name="entourage_prenom"]').val();
...........
...........
});
//HTML:
<form class='form-horizontal AJAX' id='form_entourage' method='post' action='modif/mod_entourage.php' style='height: 670px;'>
<span class='span5 control-group'>
<label for='entourage_nom'>Nom</label>
<input class='span5' type='text' name='entourage_nom' value='".$row["nom"]."' >
<input type='hidden' name='id_entourage' value='".$row["id_entourage"]."' >
</span>
<span class='span5 control-group'>
<label for='entourage_prenom'>Prénom</label>
<input class='span5' type='text' name='entourage_prenom' value='".$row["prenom"]."' >
</span>
<span class='span5 control-group'>
<input type='submit' name='mod_entourage' id='mod_entourage' class='btn btn-primary pull-right' value='Modifier' />
</span>
</form>
<!-- This second FORM will also work, even having the same markup -->
<form class='form-horizontal AJAX' id='form_entourage' method='post' action='modif/mod_entourage.php' style='height: 670px;'>
<span class='span5 control-group'>
<label for='entourage_nom'>Nom</label>
<input class='span5' type='text' name='entourage_nom' value='".$row["nom"]."' >
<input type='hidden' name='id_entourage' value='".$row["id_entourage"]."' >
</span>
<span class='span5 control-group'>
<label for='entourage_prenom'>Prénom</label>
<input class='span5' type='text' name='entourage_prenom' value='".$row["prenom"]."' >
</span>
<span class='span5 control-group'>
<input type='submit' name='mod_entourage' id='mod_entourage' class='btn btn-primary pull-right' value='Modifier' />
</span>
</form>然后,即使所有的表单都有完全相同的标记,它们也会完美地工作,因为您只引用了触发提交:保存代码的那个表单!
https://stackoverflow.com/questions/16980848
复制相似问题