focusout事件不适用于动态生成的文本框

时间:2013-12-06 08:41:56

标签: javascript jquery textbox jquery-focusout

//<![CDATA[ 
$(window).load(function() {

    $('.n_val').focusout(function() {
        alert(this.id);

    });

});//]]>

动态生成文本框

buffer += "<tr><td>" + nomen_list.getName() + "</td><td><input type='text' style='width:50px' class='n_val' id=" + nomen_list.getId() + "-" + nomen_list.getCat() + " value=" + nomen_list.getVal() + " /></td></tr>";

我动态获取文本框,但focusout不适用于动态生成的文本框,而同一页面有一些文本框,这是硬编码的,上面的脚本会被触发。

5 个答案:

答案 0 :(得分:9)

$(window).load(function() {
    $(document).on('focusout','.n_val',function() {
        alert(this.id);
    });
});

您可以使用文本框中最近的父ID或类,而不是使用文档。我不知道你的html布局,因此使用文档。另见jQuery on。

答案 1 :(得分:2)

$(document).on("focusout", ".n_val", function(){
  alert("hi");
});

答案 2 :(得分:0)

试试这个:

$(document).ready(function() {
    $(document).on('focusout','.n_val', function() {
      alert(this.id);
    });
});

答案 3 :(得分:0)

$(document).on('focusout', '#randmSubstationTable tbody tr td', function () {
    $('#randmSubstationTable tbody tr td')
        .focusout(function(){
            $(this).parent().parent().children().index($(this).parent());
        });
});

答案 4 :(得分:-1)

在将每个文本框添加到DOM后,您应该调用focusout。在这里你可能会很快调用它(在加载事件时,可能会在添加动态文本框之前发生)