Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > jQuery. Передача name'ов отмеченных checkbox'ов


Автор: makis 16.11.2007, 23:20
Доброго времени суток.
У меня следующая ситуация. Есть div, в который PHP-скриптом выводятся checkbox'ы. Каждый checkbox - это курорт. В другой div выводятся все имеющиес отели для всех курортов. Для каждого курорта имеется некоторое количество отелей, соответствуюшие именно ему. Хочу сделать, чтоб при отмечании одного из checkbox'ов отели, соответствующие ему попадали в соответствующий div. Это сделать несложно, когда знаешь какой checkbox был выбран.
Код

function addNumbers() {
    chk1 = имя_первого_отмеченого_чекбокса
    chk2 = имя_второго_отмеченого_чекбокса
    $("#hotels").load("select.php", { chk1: chk1, chk2: chk2 });
});

Однако выбрано может быть произвольное кол-во checkbox'ов... Вот я в затруднении как в этом случае передать PHP-скрипту имена отмеченных.

Автор: ksnk 17.11.2007, 12:45
Остался не понятным метод передачи параметров в select.php. Может просто массив передавать?.. Впрочем - непринципиально.
А так - вот. div - имя того самого элемента, в котором сидят нужные чекбоксы

Код

function addNumbers() {
  var result={}
  $("#div>input[type*='checkbox'][checked]").each(function(){
      result[this.name]=this.name
  })
  $("#hotels").load("select.php", result);
}


Автор: makis 17.11.2007, 17:14
ksnk
Спасибо большое. Упорные мои поиски тоже увенчались успехом. Так и есть. Нужно было массивом передавать. Вот код, может быть кому-то пригодится:
Код

<script type="text/javascript"> 
function showHotels() { 
var tagsArray = new Array(); 
$("input:checked", resort).each(function(id) {  
    message = $("input:checked", resort).get(id);  
    tagsArray.push(message.id); 
    }) 
$("#hotels").load("resort.php", { 'resort[]': tagsArray }); 
} 
</script>

В четвёртой строке resort - это id того div'а, в который выводятся checkbox'ы с курортами.

Автор: ksnk 17.11.2007, 17:36
Хм... В документации написано, что второй параметр функции $ обязан быть элементом jQuery, так что просто id'ом скорее всего не обойтись, впрочем - не проверял...

5-я строчка лишняя, а вместо 6-й нужно написать 
    tagsArray.push(this.id); 

Автор: makis 17.11.2007, 20:02
ksnk
Да вроде нет... Всмысле насчёт второго элемента идёт речь. Вот из документации пример:
Код

:input    Выбирает все элементы формы (input, select, textarea, button).
:text    Выбирает все текстовые поля (type="text").
:password    Выбирает все поля для ввода паролей (type="password").
:radio    Выбирает все радиокнопки (type="radio").
:checkbox    Выбирает все флаговые поля (type="checkbox").
:submit    Выбирает все кнопки для отсылки формы (type="submit").
:image    Выбирает все изображения на форме (type="image").
:reset    Выбирает все кнопки очистки формы (type="reset").
:button    Выбирает все остальные кнопки (type="button").

Код

$("#myForm :input")
$("input:radio", myForm)

Тут элемент jQuery может быть и первым и вторым...
А насчёт лишних строчек... Вроде всё и так работает. Так что трогать не буду. Пользуюсь правилом: работает!?!? - не трожь!

Добавлено через 12 минут и 11 секунд
ksnk
Случайно не знаете как посредством jQuery реализовать отмечание всех chekbox'ов и сняти галок с них по нажатию на ссылку?
Нашёл некий код, но не могу разобраться...
Код

// context = id of elements which contains checkboxes
// controller = DOMelement of ckeckbox controller
function checkall(context, controller){
    $("#"+context).find("input[@type$='checkbox']").not(controller).each(function(){
        // verify the state of checkbox controller and pass the state to others checkboxes
                this.checked = $(controller).checked;
    });
}

Автор: ksnk 17.11.2007, 20:31
Цитата(makis @  17.11.2007,  20:02 Найти цитируемый пост)
$("input:radio", myForm)

Второй параметр - myForm! ОН должен быть объектом jQuery...
Цитата(makis @  17.11.2007,  20:02 Найти цитируемый пост)
Вроде всё и так работает

Ну да, действительно,  почему бы не завести лишнюю глобальную переменную и лишний раз не заставить jQuery прошерстить весь документ... И так все работает...

Цитата(makis @  17.11.2007,  20:02 Найти цитируемый пост)
Нашёл некий код, но не могу разобраться...

Какая конкретно функция вызывает затруднение ? Может, документация поможет ?



Автор: makis 17.11.2007, 21:55
Цитата

Второй параметр - myForm! ОН должен быть объектом jQuery...

Да это же id элемента на странице... Будь то div, будь то input, будь то форма...

Автор: ksnk 17.11.2007, 23:38
Цитата(makis @  17.11.2007,  21:55 Найти цитируемый пост)
Да это же id элемента на странице... Будь то div, будь то input, будь то форма... 

Хм... В этом случае - да, можно и просто строковое значение. 
Это страшнее, чем PHP smile Неявные преобразования строки к элементу дизайна... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)