Я пытаюсь подключить VKI (см. Http://www.greywyvern.com/code/javascript/keyboard) к элементу, который динамически добавляется в DOM через Javascript.
По существу, это таблица с только одной строкой для начала и там "Add Row" и "Delete Row". Это становится сложно, потому что каждая строка имеет вход, который требует VKI.
Ниже приведен фрагмент моего более крупного кода для обработки добавления и удаления строки.
$('#add-passenger-row').click(function(){
get_lastID();
$('#passenger-information tbody').append(newRow);
// this doesn't work --- throws "Uncaught TypeError: undefined is not a function"
var myInput = $(newRow).find('#myInput');
VKI_attach(myInput);
// this works
var myInput = document.getElementById('myInput');
VKI_attach(myInput);
});
Мой вопрос... как я могу сделать эту работу? т.е. присоединить VKI к каждому входу в строке, который добавляется динамически, когда пользователь нажимает кнопку "Добавить строку",
Я могу создать JSBin, если вопрос недостаточно ясен.
Пытаться:
var myInput = $(newRow).find('#myInput').get(0);
VKI_attach(myInput);
.get()
извлекает элемент DOM из объекта jQuery. VKI
не является виджетами jQuery, поэтому он не работает с объектами jQuery, он ожидает наличия необработанных элементов DOM.
Я думаю, что d-bro82 и ZiNNED оба правильны, но попробуйте var myInput = $ ('# myInput') [0]; Поскольку VNK_attach принимает только элемент dom, [0] должен удалить обертку jQuery
Причина, по которой вариант jQuery не работает, заключается в том, что $(newRow).find('#myInput')
не совпадает с document.getElementById('myInput')
. Смотрите этот вопрос. Видимо, VKI_attach принимает только элемент DOM, а не элемент оболочки jQuery.
Пытаться
var myInput = $('#myInput');
Удачи
newRow
?