我试图将VKI(请参阅http://www.greywyvern.com/code/javascript/keyboard)附加到通过Javascript动态添加到DOM的元素中。
基本上,它只是一个只有一行开头的表格,并且有#34;添加行""添加行"和"删除行"。它变得棘手,因为每一行都有一个需要连接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。
答案 0 :(得分:1)
尝试:
var myInput = $(newRow).find('#myInput').get(0);
VKI_attach(myInput);
.get()
从jQuery对象中检索DOM元素。 VKI
不是jQuery小部件,因此它不适用于jQuery对象,它需要原始的DOM元素。
答案 1 :(得分:1)
我认为d-bro82和ZiNNED都是正确的,但尝试var myInput = $('#myInput')[0]; 由于VNK_attach只接受dom元素,[0]应该删除jQuery包装器
答案 2 :(得分:0)
尝试
var myInput = $('#myInput');
祝你好运
答案 3 :(得分:0)
jQuery变体无效的原因是$(newRow).find('#myInput')
与document.getElementById('myInput')
不同。见this SO question。显然VKI_attach只接受DOM元素而不是jQuery包装元素。