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

时间:2011-12-28 15:29:37

标签: php jquery arrays facebox

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

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,所以原谅你可能发现的任何怪物错误!

1 个答案:

答案 0 :(得分:0)

要开始使用,您的代码会遇到一些风格问题。首先,您应该选择不对数组,对象等使用new语法。相反,请使用Array之类的内容声明var 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); } }); }); } 一起使用。

现在谈谈你的问题。我重构了你的代码:

json_decode()

在您的PHP代码中,您将type此数组并按您的需要使用它。我还将urlerror参数移到了顶部,因为success和{{1}}函数可能会非常冗长。

我会考虑阅读JavaScript Patterns(至少是Essentials章节)。