更新面板回发后,Jquery Facebook Autocomplete消失

时间:2010-10-31 13:45:00

标签: jquery ajax updatepanel jquery-autocomplete

哎, 我在asp.net ajax更新面板中使用Facebook风格的autoComplete, 问题是当我对UpdatePanel Jquery Disapear进行回发时, 任何Idead?

感谢,

代码:

$(document).ready(function () {


$("[id$='DDL_Guests']").fcbkcomplete({
    json_url: "../../Search.asmx/SearchAC",
    cache: false,
    filter_case: false,
    filter_hide: true,
    firstselected: true,
    onremove: RemoveItem,
    onselect: AddItem,
    filter_selected: true,
    maxitems: 10,
    newel: true
});

});

1 个答案:

答案 0 :(得分:2)

当发生部分回发时,它会更新您的标记,因此ID为DDL_Guests的元素将不再绑定到您第一次加载页面时使用的jQuery代码。

因此,您需要在发生部分回发事件后重新绑定jQuery代码。

要解决此问题,您必须在代码中添加endRequest事件处理程序并调用一个函数,该函数将窗口小部件再次重新绑定到DDL_Guests元素,如下面的代码所示

$(document).ready(function () {
    jQueryInit();
});

function load() { 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(jQueryInit); 
} 

function jQueryInit() { 
    $("[id$='DDL_Guests']").fcbkcomplete({
        json_url: "../../Search.asmx/SearchAC",
        cache: false,
        filter_case: false,
        filter_hide: true,
        firstselected: true,
        onremove: RemoveItem,
        onselect: AddItem,
        filter_selected: true,
        maxitems: 10,
        newel: true
    });            
} 

然后只需从身体标记中调用load函数

<body onload="load()">

使用此技巧,jQueryInit()函数内的jQuery代码在第一次页面加载$(document).ready(function () {}时绑定,并在UpdatePanel引起的部分页面回发后再次重新绑定

希望有所帮助