我正在创建一个输入框并尝试向该输入添加事件keydown。如果我静态创建输入,我可以用jquery找到它。但是,如果我在后面的代码中创建它,我无法通过jquery找到它。
这是我动态创建输入的c#代码
result0 += "<div style='float:left;width:130px'>Telephone: </div><div style='float:left;width:200px'><input id='txt_basic_telno" + i + "' class='blue_input' type='text' value='" + dr["MobilePhone"].ToString() + "' style='width:250px' maxlength='11' /></div><div style='clear:both'></div>";
这是我的jquery代码,当用户在焦点位于输入框时按键时应该触发
$("#txt_basic_telno").keydown(function (event) {
alert('test');
});
我该如何解决这个问题?
答案 0 :(得分:1)
试试这个
$(document).on('keydown',"#txt_basic_telno",function (event) {
alert('test');
});
答案 1 :(得分:1)
您需要使用on
$(document).on('keydown',"[id^=txt_basic_telno]", function (event) {
alert('test');
});
请尽量不要将此附加到document
,因为它无效。用最近的静态容器替换文档。
这是一个fiddle来演示
修改强>
来自破坏的被盗选择器.......他的答案更好但我想保留文件评论,因为它很重要
答案 2 :(得分:1)
如果您的ID不完全是txt_basic_telno
,但只是以txt_basic_telno
开头,似乎表示您的代码,那么您可以使用此代码:
$(document.body).on('keydown', '[id^=txt_basic_telno]', function(e) {
alert('click!');
});
答案 3 :(得分:1)
您正在使用两个不同的ID:'txt_basic_telno“+ i +”'和'txt_basic_telno'
答案 4 :(得分:-1)
jQuery将事件处理程序绑定到与调用jQuery函数时选择器匹配的任何现有对象,因此如果要将其应用于动态创建的内容,则需要调用每次创建新元素后都会运行jQuery .keydown函数。