将选定的复选框存储在数组中并将其与facebox一起使用

发布于 2024-12-23 02:55:41 字数 1114 浏览 1 评论 0原文

我在使用 jQuery 的插件 Facebox 处理表单中的一些数据时遇到一些问题。 我想要完成的基本上是将所选复选框数量的值放入一个数组中,并在我的弹出窗口中使用它来使用 PHP 处理它。 我在表单页面上有类似这样的内容:

form.html

<input type="checkbox" name="equip" value="<?php echo $equip_id; ?>" />
<input type="checkbox" name="equip" value="<?php echo $equip_id; ?>" />
<input type="checkbox" name="equip" value="<?php echo $equip_id; ?>" />

<input type="button" name="replace" onClick="replace_equip()" />

还有更多复选框,但我认为这些足以开始使用。

这里是 replace_equip()

function replace_equip() {
  var nArr = new Array();
    $("input:checkbox[name=equip]:checked").each(function() {
  nArr.push($(this).val());
  $.facebox(function() {
    $.ajax({
      data: { name : nArr },
      error: function() {
      $.facebox("err");
      },
      success: function(data) {
      $.facebox(data);
      },
      type: "post",
      url: "test.php"
    });
  });
});
}

我试图将选定的复选框保存到一个数组中,以便我可以在 test.php 中使用它进行 PHP 处理。

我刚刚开始使用 jquery 和 javascript,所以请原谅您可能发现的任何巨大错误!

I'm having some trouble using jQuery's plugin Facebox to process some data from a form.
What I'm trying to accomplish is basically get the values of the number of selected checkboxes into an array and have it available in my popup to process it with PHP.
I have something like this on a form page:

form.html

<input type="checkbox" name="equip" value="<?php echo $equip_id; ?>" />
<input type="checkbox" name="equip" value="<?php echo $equip_id; ?>" />
<input type="checkbox" name="equip" value="<?php echo $equip_id; ?>" />

<input type="button" name="replace" onClick="replace_equip()" />

There are more checkboxes, but I think these are enough to get started.

Here is replace_equip()

function replace_equip() {
  var nArr = new Array();
    $("input:checkbox[name=equip]:checked").each(function() {
  nArr.push($(this).val());
  $.facebox(function() {
    $.ajax({
      data: { name : nArr },
      error: function() {
      $.facebox("err");
      },
      success: function(data) {
      $.facebox(data);
      },
      type: "post",
      url: "test.php"
    });
  });
});
}

I'm trying to save the selected checkboxes into an array, in a way that I can use it for PHP processing in test.php.

I'm just getting started with jquery and javascript in general, so forgive any monster mistakes you may find!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅浅淡淡 2024-12-30 02:55:41

首先,您的代码存在一些风格问题。首先,您应该选择不对数组、对象等使用 new 语法。而是使用 var array = []; 之类的内容声明您的 Array代码>.其次,您使用的是内联 onClick,如果您已经在使用 jQuery,则应避免使用它。相反,请使用类似 $('input[name="replace"]').on('click', function() {...}); 的内容。您还应该考虑在函数中使用camelCase,如果您喜欢下划线,请将它们与vars 一起使用。

现在谈谈你问题的实质。我像这样重构了你的代码:

$('input[name="replace"]').on('click', function() {
    replaceEquip();
});

function replaceEquip() {
  var array = [];
  $("input:checkbox[name=equip]:checked").each(function() {
    array.push($(this).val());
  });

  $.facebox(function() {
    $.ajax({
      type: "POST",
      url: "test.php",
      data: { name : array },
      error: function() {
        $.facebox("err");
      },
      success: function(data) {
        $.facebox(data);
      }
    });
  });
}

在你的 PHP 代码中,你可以 json_decode() 这个数组并按照你想要的方式使用它。我还将 typeurl 参数移至顶部,因为您的 errorsuccess 函数可能会变得相当冗长。

我会考虑阅读 JavaScript 模式(至少是要点章节)。

To get started, there are a few stylistic issues with your code. First, you should opt not to use new syntax with Arrays, Objects, etc. Instead, declare your Array with something like var array = [];. Second, you're using an inline onClick, which should be avoided if you're using jQuery already. Instead, use something like $('input[name="replace"]').on('click', function() {...});. You should also consider using camelCase with your functions, and if you like underscores, use them with vars.

Now onto the meat of your question. I refactored your code like so:

$('input[name="replace"]').on('click', function() {
    replaceEquip();
});

function replaceEquip() {
  var array = [];
  $("input:checkbox[name=equip]:checked").each(function() {
    array.push($(this).val());
  });

  $.facebox(function() {
    $.ajax({
      type: "POST",
      url: "test.php",
      data: { name : array },
      error: function() {
        $.facebox("err");
      },
      success: function(data) {
        $.facebox(data);
      }
    });
  });
}

In your PHP code, you would json_decode() this array and work with it how you want. I also moved the type and url params to the top, as your error and success functions may get quite lengthy.

I would consider reading JavaScript Patterns (at least the Essentials chapter).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文