Число JS / jQuery увеличивается в течение - PullRequest
0 голосов
/ 23 сентября 2011

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

Теперь у меня есть это в моем коде:
Пример:

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

Хочу вот что:

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

Код:

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

Ответы [ 2 ]

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

Так как вы хотите обновить все входы при изменении, вы можете перебрать все входы после добавления элементов. Просто добавьте к ним имя класса, чтобы вы знали, какие из них считать.

Пример:

$('input').live("keyup", function () {    
    var id = '#'+$(this).closest('b').attr('id'),
    val = $(this).val();

    $(id+' .lee').empty();  

    for (var i = 0; i < val; i++) {
        $(id+' .lee').append('<input type="text" class="input_generated">');  
    }

    $('input.input_generated').each(function(i) {
      $(this).attr('name', 'hi[' + i + '][]');
    });
});

Скрипка: http://jsfiddle.net/rHUqS/1/

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

Используя переменную вне функции, вы можете решить это просто. Тем не менее, он всегда будет просто увеличивать номера индексов; если вы ввели счет в неправильном порядке, ваши индексы будут в неправильном порядке. Но, может быть, все в порядке.

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;
});

РЕДАКТИРОВАТЬ: фиксированный val, проходящий как строка, а не int

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