У меня есть html-форма с кучей флажков. Каждый чекбокс описывается следующим образом:
echo "<td>"
echo "<input type = \"checkbox\" name=\"name\" value=\"$name\">";
echo "<input type = \"hidden\" name=\"user\" value=\"$user\">";
echo "</td>"
Тогда у меня есть кнопки отправки, который при нажатии будет запускать некоторые JavaScript:
echo "<input type=\"button\" name =\"send\" value=\"Submit\" onclick=\"get_checked(form)\">";
Теперь мой JavaScript:
function get_checked(form){
$("input[type='checkbox']").change(function() {
if($(this).is(':checked')){
$(this).find("input[name]").each(function(index, node){
formData[node.name] = node.value;
alert (node.name + node.value);
});
}
});
}
Я хочу найти каждый установленный флажок, а затем распечатать каждую из пар имя/значение для флажка. Но это не работает, ничего не получает извещение, и я думаю, что я мог бы использовать $ (это) неправильно, потому что это работает, когда я использую .each:
$(':checkbox:checked').each(function(i){
testname_checked[i] = $(this).val();
alert(testname_checked[i]);
});
Есть идеи?
$ (this) .find ... будет искать элементы, которые являются потомками флажка (я сомневаюсь, что он есть). – James
Когда вы отправляете форму, вы прикрепляете обработчики событий, и вы не отменяете отправку формы. И что вы выбираете, это ребенок флажка? – epascarello
Итак, похоже, что вы в обработчике кликов добавили обработчик изменений. Это неправильно. Вам нужно просто прикрепить обработчик изменений. –