0

ドロップダウン リスト オプション、入力ボックス、送信ボタンを含むフォームがあります。選択オプションは動的にコンパイルされます。このフォームをページに挿入して配置します。

<div id="dropdown">
       <?php include("./listforward.php"); ?>
</div> 

listforward.php が含まれています。

...
<form id="changeforwardForm" method="post" action="changeforward.php" class="ajaxform">
...
</form>

changeforward.php はいくつかの作業を行い、メッセージを表示します。

<?php echo '<div style="color:red">'.$msg.'</div>'; ?>

送信後、このメッセージはページの上部近くに表示されます

<div id="testDiv"></div>

また、フォーム全体がリロードされ、更新されたリスト オプションが表示されます。私が抱えている問題は、メッセージが最初の送信から上部に 1 回だけ表示され、2 番目の送信で空白のページが開き、そこに表示されることです。

これは .live() または .on() と関係があることは承知していますが、私の人生では、それを適用する方法がわかりません。

私の外部 Javascript ファイル

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>

jQuery フォーム プラグイン

<script type="text/javascript"> 
  // prepare the form when the DOM is ready 
  $(document).ready(function(){ 
      var options = { 
          target:        '#testDiv',   // target element(s) to be updated with server response 
          success:       showResponse  // post-submit callback 
  }; 

  // bind form using 'ajaxForm' 

  $('.ajaxform').ajaxForm(options);          

  });         


  // post-submit callback 
  function showResponse(responseText, statusText, xhr, $form)  { 

     $("#dropdown").load("index.php #dropdown");

       }  
</script>

同じページに別のフォームもあります(現在無効になっています)。このフォームの出力をターゲットにして、そのメッセージを #testDiv に表示したいと思います。

正しい方向へのキックは大歓迎です!

よろしくスティーブン

4

1 に答える 1

0

あなたはすべてのコードを示していませんが、私が理解できることから、あなたが使用している:

$('.ajaxform').ajaxForm(options);          

  }); 

関数を送信元にアタッチします。次に、あなたが言ったように、フォームをリロードして、関数がアタッチされないようにします。その後、再送信すると、通常の送信のように動作します。

フォームをリロードした後、フォームにメソッドを再アタッチする必要があります。つまり、これを再度実行します。

$('.ajaxform').ajaxForm(options);          

      }); 
于 2012-02-08T06:50:31.053 に答える