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 时,我只收到一个警报,但是当我将提交放在表单之外时,我可以获得 10 个警报。

4

2 回答 2

1

您正在提交表单。结果是您离开了页面,因此您停止了所有脚本。由于您没有精确设置action表单的参数,它是当前页面,因此您只需在循环的第一次迭代中自行替换当前页面。

如果您想从一个页面发出多个请求而不重新加载,通常的解决方案是使用 ajax。

你可以例如做

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

您可以发布表单而无需使用 Ajax 重新加载页面。为此,您需要在提交表单时首先停止浏览器的默认行为。您可以通过调用e.preventDefault()提交事件来做到这一点。然后使用 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 回答