2

フォームの検証に ajax を使用していますが、フォームが php の while ループにあり、リクエスト 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 フォーム: 私の loop while と私の ajax は 1 つのフォームだけで動作します。例: 3 つのメンバーがある場合、ajax 検証は最初のメンバーでのみ機能し、2 番目のメンバーでは 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>
");
    }

誰かが私を助けてくれますか?

4

3 に答える 3

0

あなたはすべてのフォームに同じIDを使用しています。フォーム ID にカウンター変数を追加します。それはきっとあなたのために働くでしょう。フォーム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>

Jクエリ:-

   $("[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-07T09:38:01.687 に答える
0

フォームに 1 つの ID しか使用していないため、初めてのみ機能します。

于 2013-06-07T09:38:02.670 に答える
0

わかりました、これは答えられましたが、クラスでは同じことがうまくいくと思います(追加のマークアップは不要、ID、数字、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>

次に、すべてのフォームにまったく同じマークアップが含まれていても、送信をトリガーした人だけを参照しているため、完全に機能します。コーディングを保存してください!

于 2013-08-07T16:10:12.043 に答える