jQuery Autocomplete теряет текст при AutoPostBack

У меня есть поле автозаполнения jQuery в веб-форме ASP.Net, и до сих пор все работало отлично. У меня также есть DropDownList, который мне нужно запустить onSelectedIndexChanged с помощью AutoPostBack.

Когда я изменил свой код для выполнения AutoPostBack, текстовое поле с автозаполнением jQuery становится пустым. Однако, если я посмотрю на источник страницы, текст находится в текстовом поле. Если я сейчас отправлю форму, страница отправит обратно пустое поле. Мой Google-Fu слаб в этом, так как я не мог придумать никакого обходного пути.

Были ли у кого-нибудь подобные проблемы с отключением поля автозаполнения в AutoPostBack, и как вы это обошли?

Я могу опубликовать код, если это действительно необходимо, но мне нужно будет очистить его, прежде чем я смогу это сделать из-за политики компании.


person Moose    schedule 05.05.2009    source источник
comment
У вас включено состояние просмотра для текстового поля автозаполнения?   -  person John Rasch    schedule 06.05.2009
comment
Да. (Вернулся и проверил, чтобы быть уверенным, но пусто только поле «Автозаполнение». Все остальные поля в порядке.)   -  person Moose    schedule 06.05.2009


Ответы (2)


Как инициализируется поле автозаполнения? Устанавливается ли он в пустую строку либо при загрузке страницы с сервера, либо с помощью плагина автозаполнения jQuery в document.ready?

Если исходный код подключаемого модуля задает для текстового поля пустую строку в document.ready, попробуйте следующее:

// Store current textbox value in a var
var temp = $('#mytextbox').val();

// Initialize the autocomplete plugin (winging it on the syntax)
$('#mytextbox').autocomplete();

// Reset the value of the textbox.
$('#mytextbox').val(temp);
person Jon Erickson    schedule 05.05.2009
comment
Я думаю, что плагин в document.ready устанавливает пустую строку. Передо мной нет кода, но я почти уверен, что в загрузке страницы нет ничего, что устанавливало бы его обратно. Я не помню, чтобы видел что-нибудь в документах автозаполнения об инициализации поля. - person Moose; 06.05.2009
comment
вот что я думаю, взгляните на исходный код плагина, если можете. - person Jon Erickson; 06.05.2009
comment
если это так, попробуйте приведенный выше код javascript/jquery, который я отредактировал в своем сообщении. - person Jon Erickson; 06.05.2009
comment
Я отказался от просмотра исходного кода плагина автозаполнения, так как мои навыки работы с javascript не самые лучшие. (Возможно, именно поэтому у меня возникли проблемы с этим в первую очередь.) Ваше исправление сработало, но оно кажется немного жирным. :-) Я помечаю это как ответ, так как это исправление, и оно позволяет мне двигаться дальше на этой странице. Спасибо! - person Moose; 06.05.2009

Если вы используете подключаемый модуль jQuery Autocomplete 1.1, * Версия: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $

Добавьте «autoPostBackSelection: false» в параметрах Пример:

$.Autocompleter.defaults = {
    inputClass: "ac_input",
    resultsClass: "ac_results",
    loadingClass: "ac_loading",
    minChars: 1,
    delay: 400,
    autoPostBackSelection: false,
    ...

После этого добавьте это непосредственно перед "return true; в конце функции" selectCurrent().

if (options.autoPostBackSelection == true) {
        __doPostBack($input.id, "");
      }

Пример:

function selectCurrent() { ... if (options.autoPostBackSelection == true) { __doPostBack($input.id, ""); } вернуть истину; }

person PBelanger    schedule 31.05.2010