Проблема в цикле for для добавления нового ввода с увеличением числа - PullRequest
1 голос
/ 23 сентября 2011

В соответствии с примером я хочу, чтобы каждый раз добавлялся новый ввод с указанием номера в полях (1, 2, 3), причем число увеличивалось в каждом из них при добавлении нового ввода до name[+number increasing here+][] вinput.

Пример: этот пример не сработал true

Я хочу это:

если поместить в «поле 1» число 2 мы получим новый ввод с именем name[0][], name[1][]
в «поле 2» введите число 3 мы получим name[2][], name[3][], name[4][]
в «поле 3»"введите число 2, мы получим name[5][], name[6][] и т. д.

Код (как, фиксированный val, проходящий как строка, а не int!?):

var counter = 0;
$('input').live("keyup", function () {    
    var id = '#'+$(this).closest('b').attr('id');
    $(id+' .lee').empty();    
    var val = int($(this).val());
    for (var i = counter; i < val + counter; i++) {
        $(id+' .lee').append('<input type="text" name="hi['+i+'][]">');        
    }
    counter = val + counter;
});

1 Ответ

0 голосов
/ 23 сентября 2011

Изменить: Я перечитал ваш вопрос и считаю, что у меня есть решение, которое имеет желаемое поведение:

JavaScript:

var counter = 0;
$('input').live('keyup', function(e) {
    // bail out if the keypress wasn't a number
    if (e.which < 48 || e.which > 57) { return; }

    // get the current value of the input
    var val = +$(this).val();

    // don't do anything if we don't have a valid number
    if (isNaN(val)) { return; }

    // find and empty .lee
    var $lee = $(this).closest('b').find('.lee').empty();

    // create inputs
    for (var i = 0; i < val; i++) {
        $('<input type="text"/>').attr('name', 'hi[' + (counter + i) + '][]')
            .appendTo($lee);
    }

    // update our counter
    counter = val + counter;
});

Вот обновленныйjsFiddle: http://jsfiddle.net/wAwyR/14/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...