为什么我的输入元素在回发后不会保留焦点/模糊事件?

时间:2012-05-03 18:02:04

标签: javascript jquery asp.net event-handling updatepanel

我正在使用jQuery通过

设置某些输入文本框控件的焦点/模糊事件
$(function() {
  ..
});

但是每当发生回发时,我的控件就不再执行这些事件了。我尝试将它们从文档就绪事件中删除,并将代码放在文档的底部,希望每次都加载它,但这不起作用。如何在回发后让这些控件保留焦点/模糊事件?

不认为这很重要,但这些回发发生在ajax:UpdatePanel

3 个答案:

答案 0 :(得分:4)

您将事件附加到元素上,稍后将删除它们,这意味着事件也会被删除。您可以反复附加事件,但您可以简单地将事件附加到更高级别的父节点,而不用担心它:

$(function () {
    $(document).on('focusin', 'input.userTxtA_center', function () {
            this.value = '';
            this.className = 'userTxtB_center';

    });
});

我使用focusin事件代替focus,因为focus没有冒泡。

隔离演示:http://jsfiddle.net/TUqsE/

答案 1 :(得分:0)

使用.live()

绑定您的方法
$('selector').live('EVENT', function() { });

EVENT是blur / focus / etc ...然后在DOM中创建控件时无关紧要,jQuery会自动重新连接处理程序。

http://api.jquery.com/live/

OR 在回发完成后重新连接事件

请参阅 - ASP.NET - UpdatePanel and JavaScript - 了解如何操作。

答案 2 :(得分:-1)

是的,这是因为updatepannel, 使用此pageload事件而不是$(document).ready或$(function(){});

〔实施例:

<script type="text/javascript" language="javascript">
    function pageLoad() {
       $('#MyId').bind("mouseover", function(e) {
           // Do something exciting
       });
    }
    </script>