Добавление дополнительных полей ввода, когда они мне нужны - PullRequest
0 голосов
/ 17 февраля 2010

Я пытаюсь создать менеджер списков на основе HTML / CSS / JavaScript.

Я использую поля ввода текста в качестве отдельных элементов списка, причем первое поле ввода текста:

<input type="text" id="input1" value="Enter your first item" />

Я использую jQuery для создания нового поля ввода текста, если я использовал предыдущее поле ввода текста:

<input type="text" id="input2" value="Add another item" />

Код jQuery проверяет, изменилось ли значение первого поля ввода текста, а затем создает второе поле ввода текста.

Если значение второго поля ввода текста изменяется, то я хочу создать третье поле ввода текста:

<input type="text" id="input3" value="Add another item" />

Я использую jQuery для отслеживания идентификаторов каждого поля ввода текста и для управления созданием новых. Однако оно создает новое поле ввода текста только в том случае, если изменяется первое поле ввода текста input1. Я хочу создать новое поле ввода текста, если последнее поле ввода текста изменится. Вот код, который я использую для создания нового поля ввода текста:

oldNum = newNum;
newNum++;
var newElement = $("#input" + oldNum).clone().attr('id', 'input' + newNum).attr('value', 'Add another item');
$("input").last().after(newElement);

Заранее спасибо за помощь.

R

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

Вы можете использовать функцию jQuery live только для обработки события change для последнего ввода, например:

$('input:last-child').live('change', function() {
    $(this).after('<input id="input' + ++newNum + '" value="Add another item" />');
});
0 голосов
/ 17 февраля 2010

Возможно, вы захотите использовать синтаксис привязки событий .one () . Он выполняет действие не более одного раза, поэтому вы можете прикрепить его к каждому полю ввода по мере его создания.

var current = 1;
$("input1").one("change",createNextInput);

function createNextInput()
{
    var next = current + 1;
    var newElement = $("input"+current).clone().attr({id: "input"+next,value: "Add another item"});
    $("input"+current).after(newElement);
    $("input"+next).one("change",createNextInput);
    current++;
}

Возможно, вы могли бы оптимизировать это, но вы поняли.

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