0

次のフォーム内の送信ボタンでjqueryコードを複数回クリックする必要があります。

送信イベントを追跡するYUIイベントリスナーがあり、毎回コールバック関数を呼び出します。一度クリックして複数の送信イベントを生成するにはどうすればよいですか?

<!DOCTYPE html>
<html>
<head>
<style>

 button { margin:10px; }
 div { color:blue; font-weight:bold; }
 span { color:red; }
 </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
 </head>
 <body>
<form class="forms" id="result_form" method="post" >
 <input type="submit" id = "click" value="Sum Result" ></input>
 </form>

 <button id = "B2">Button #2</button>

  <script>

  $("#click").click(function () {
  alert("Test");
  });

  $("#B2").click(function () {
  for(j=0;j<10;j++)
  $("#click").trigger('click');


   </script>

   </body>
   </html>

上記のコードでは、B2をクリックするとアラートが1つだけ表示されますが、送信をフォームの外に置くと、10個のアラートを取得できます。

4

2 に答える 2

1

フォームを送信しています。その結果、ページを離れるので、すべてのスクリプトを停止します。フォームのパラメーターを正確に指定しなかっactionたため、これは現在のページであるため、ループの最初の反復で現在のページを単独で置き換えるだけです。

リロードせずに1つのページから複数のリクエストを作成する場合、通常の解決策はajaxを使用することです。

あなたは例えばすることができます

for(j=0;j<10;j++) {
  $.ajax('someurl');
于 2012-06-29T07:17:46.487 に答える
0

Ajax を使用すると、ページをリロードせずにフォームを POST できます。これを行うには、フォームを送信するときにブラウザのデフォルトの動作を最初に停止する必要があります。e.preventDefault()これを行うには、submit イベントを呼び出します。次に、ajax を使用して、フォームをデータにシリアル化します。jQuery と YUI の両方が、それを行うためのユーティリティを提供します。

// jQuery
$('#result_form').on('submit', function (e) {
  e.preventDefault();
  $.post('cmd/result', $(this).serialize());
});

// YUI
Y.one('#result_form').on('submit', function (e) {
  e.preventDefault();
  Y.io('cmd/result', {
    method: 'POST',
    form: { id: this }
  });
});
于 2012-07-12T22:58:08.647 に答える