1

我正在创建一个输入框并尝试向该输入添加一个事件 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');
});

我怎样才能解决这个问题?

4

5 回答 5

1

如果您的 id 不完全是,txt_basic_telno而只是以 开头txt_basic_telno,这似乎表明您的代码,那么您可以使用这个:

$(document.body).on('keydown', '[id^=txt_basic_telno]', function(e) {
     alert('click!');
});
于 2013-03-20T15:42:21.100 回答
1

您正在使用两个不同的 ID:'txt_basic_telno" + i + "' 和只是 'txt_basic_telno'

于 2013-03-20T16:23:02.327 回答
1

你需要使用

$(document).on('keydown',"[id^=txt_basic_telno]", function (event) {
        alert('test');
});

尽量不要附加它,document因为它效率低下。用最近的静态容器替换文档。

这是一个要演示的小提琴

编辑

从dystroy被盗的选择器......他的回答更好,但我想保留文档评论,因为它很重要

于 2013-03-20T15:41:16.610 回答
1

尝试这个

$(document).on('keydown',"#txt_basic_telno",function (event) {
        alert('test');
});

阅读http://api.jquery.com/on

于 2013-03-20T15:41:15.077 回答
-1

当调用 jQuery 函数时,jQuery将事件处理程序绑定到与选择器匹配的任何现有对象,因此如果您希望它应用于动态创建的内容,您需要在每次新元素之后调用 jQuery .keydown 函数被创建。

于 2013-03-20T15:41:40.280 回答