Jquery Facebook Autocomplete исчезает после обратной отправки панели обновлений

эй, я использую автозаполнение в стиле Facebook внутри панели обновления asp.net ajax, проблема в том, что когда я делаю обратную передачу в UpdatePanel, Jquery исчезает, есть идеи?

Спасибо,

Код:

$(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
});

});


person Roy Amir    schedule 31.10.2010    source источник
comment
Пожалуйста, покажите соответствующий код. Простой репродукционный случай был бы великолепен.   -  person Rebecca Chernoff    schedule 31.10.2010


Ответы (1)


Когда происходит частичная обратная передача, она обновляет вашу разметку, поэтому элемент с идентификатором 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()">

используя этот трюк, ваш код jQuery внутри функции jQueryInit() привязывается при первой загрузке страницы через $(document).ready(function () {} и снова привязывается после частичной обратной передачи страницы, вызванной UpdatePanel

Надеюсь, поможет

person Lorenzo    schedule 31.10.2010