Добавление нового ввода: флажок и не имеет значения

#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».