Сохранение выбранных флажков в массиве и использование его с facebox - PullRequest
0 голосов
/ 28 декабря 2011

У меня возникли проблемы с использованием плагина 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"
    });
  });
});
}

Я пытаюсь сохранить выбранные флажки в массив таким образом, чтобы использовать его для обработки PHP вtest.php.

Я только начинаю работать с jquery и javascript в целом, так что простите любые ошибки монстров, которые вы можете найти!

1 Ответ

0 голосов
/ 28 декабря 2011

Для начала, есть несколько стилистических проблем с вашим кодом. Во-первых, вы должны отказаться от использования синтаксиса 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);
      }
    });
  });
}

В вашем PHP-коде вы бы json_decode() использовали этот массив и работали с ним, как хотите. Я также переместил параметры type и url наверх, поскольку ваши функции error и success могут быть довольно длинными.

Я хотел бы прочитать Шаблоны JavaScript (по крайней мере, главу Essentials).

...