簡體   English   中英

jQuery:在動態添加的輸入控件上,不會觸發Keyup事件

[英]Jquery: Keyup event is not fired, on dynamically added input controls

下列

$('input[type = text]').on('keyup', function (e) {

});

在靜態創建的控件上效果很好

<input id="txtSearch" type="text" class="col-md-12 col-sm-12 col-xs-12 col-lg-12">

但不會針對動態創建並呈現為的控件觸發

<input type="text" class="form-control" id="idName" name="textBox">

通過ajax json響應和html的混合。

jQuery.each(response.controls, function (index, item) {
    var input = jQuery("<div class='form-group'><input type='text' class='form-control' id='" + item.id + "' name='textBox'></div>");
    jQuery('#fields').append(input);
});

我在這里做錯了什么?

對於動態創建的元素,使用委托事件

$('body').on('keyup', 'input[type=text]' function (e) {

由於您的<div class='form-group'><input type='text' class='form-control' id='" + item.id + "' name='textBox'></div>是動態的元件。

附加按鍵后,您需要綁定該按鍵。 例如。

jQuery.each(response.controls, function (index, item) {
    var input = jQuery("<div class='form-group'><input type='text' class='form-control' id='" + item.id + "' name='textBox'></div>");
    jQuery('#fields').append(input);
    inputevent();
});

function inputevent() {
    $('input[type = text]').off('keyup').on('keyup', function (e) {

    });
}

請嘗試以下操作:

jQuery(document).on('keyup','input[type = text]',function(){
    //execute your code, when dynamically added content is keyupped
});
catchKeyup(id) {
    // code here...
}
jQuery.each(response.controls, function (index, item) {
    var input = jQuery("<div class='form-group'><input type='text' class='form-control' id='" + item.id + "' onkeyup='catchKeyup(" + item.id +")' name='textBox'></div>");
    jQuery('#fields').append(input);
});

如果要通過請求的任何響應來創建輸入。 也許您應該使用常規功能進行鍵入。 這樣,您可以使用輸入鍵盤功能。

對於動態添加到DOM的元素,您需要使用on()將事件綁定到它們

$(document).on("keyup",'input[type=text]', function(){
//do your work
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM