#javascript #jquery #html #arrays
#javascript #jquery #HTML #массивы
Вопрос:
У меня проблема с добавлением нового input:checkbox
, когда я добавляю новый ввод и проверяю его при следующей настройке, нажимая на кнопку, у меня нет значения для input:checkbox
того, что было проверено. как это исправить?
ДЕМОНСТРАЦИЯ: http://jsfiddle.net/G4QRp /
$(function () {
$('a.add_input').live('click', function (event) {
event.preventDefault();
var $class = '.' $(this).closest('div.find_input').find('div').attr('class').split(" ")[0];
var size_un = $($class).length;
var $this = $(this),
$div = $this.closest($class),
$clone = $div.clone().hide().insertAfter($div).fadeIn('slow');
$clone.find('.adda').not(':has(.remove_input)').append('<div class="mediumCell"><a href="" class="remove_input"></a></div>');
$clone.find('input').val('').prop('checked', false);
$this.remove();
var size_un = $($class).length---1;
$($class ':last input:checkbox').prop('name', 'checkbox_units[' size_un '][]');
console.log($($class ':last input:checkbox').prop('name'));
});
});
Комментарии:
1. Я все еще не понимаю, каково ожидаемое поведение.
2. Не могли бы вы упростить код, чтобы точно определить реальную проблему?
3. Если у вас возникли проблемы с объяснением проблемы на английском языке, попробуйте сопроводить свой текст скриншотом того, как вы хотите, чтобы флажки выглядели
4.
var size_un = $($class).length---1;
может быть проблема. Я не знаю, как интерпретатор должен это анализировать, ноlength---1
возникаетRangeError
в Firefox 6.5. смотрите this:jsfiddle.net/G4QRp/2 проблема не
size_un
в этом . я имею в виду, что вы, когда добавляете новый ввод и устанавливаете (выбираете) флажок (в новом вводе) и затем нажимаете на кнопкуClick me
, вы не получаете значение из флажка, который нажат, почему?
Ответ №1:
Ваш код всегда очищает значение всех флажков, которые он добавляет:
$clone.find('input').val('').prop('checked', false);
Он работает нормально, хотя и довольно запутанный. Предупреждение правильно показывает флажки, которые установлены, но поскольку ваш код установил значение » для каждого из них, ну, это пустое. Если вы измените его следующим образом:
$clone.find('input').prop('checked', false);
он показывает, что значения совпадают с исходными флажками.
Возможно, вы захотите подумать об использовании атрибутов «data-» вместо строки «class» для хранения таких вещей, как имя класса «add_units».