Автозаполнение JQuery внутри SimpleModal

У меня есть простое текстовое поле с автозаполнением JQuery внутри div, в котором я использую SimpleModal для создания модального диалога. При первом вызове модального диалога автозаполнение работает нормально. После закрытия диалог полностью перестает работать. У кого-нибудь есть идеи, из-за чего это может быть?

Код выглядит следующим образом:

HTML диалог:

<div id="simplemodal">
<div class="content">
    <span class="label">国名</span>
    @Html.TextBox("NewRegion", "")
</div>
<div class="commands">
    <a>追加する</a>
    <a class="simplemodal-close">キャンセル</a>
</div>

and the script for the dialogue

/*Show add region dialogue*/
function AddNewRegion(ProjectID) {
    $('#simplemodal').modal({
        closeHTML: 'simplemodal-close',
        closeClass: 'simplemodal-close'
    });
}

Скрипт автозаполнения

$(function () {
$('#NewRegion').autocomplete({ source: '/Regions/FindRegions' } );
});

Я знаю, что этот вопрос задавался раньше, но похоже, что на вопрос так и не ответили.


person yu_ominae    schedule 18.08.2011    source источник
comment
попробуйте воссоздать автозаполнение перед отображением модального диалога.   -  person TheVillageIdiot    schedule 18.08.2011
comment
Вы имеете в виду создание функции CreateAutoComplete() { $('#NewRegion').autocomplete({ source etc... }); } и выполнять это, когда я вызываю модальное окно? Или вы имеете в виду что-то другое?   -  person yu_ominae    schedule 18.08.2011
comment
Я думаю, что при закрытии диалога это может уничтожить автозаполнение. Поэтому перед показом или сразу после показа диалога вы можете вызвать код для повторного создания автозаполнения.   -  person TheVillageIdiot    schedule 18.08.2011
comment
Хорошо, это то, что я думал, что вы имели в виду. Я спросил, потому что я все еще новичок в JS. Я попробовал ваше предложение, но, к сожалению, это не имело значения.   -  person yu_ominae    schedule 18.08.2011
comment
Удалось ли вам когда-нибудь найти разумное решение этой проблемы?   -  person malonso    schedule 12.10.2011
comment
@malonso, к сожалению, нет...   -  person yu_ominae    schedule 30.11.2011
comment
Раскапываю старый пост, но кто-нибудь когда-нибудь разбирался в этом? Столкнулся с той же проблемой.   -  person Geesu    schedule 10.02.2013
comment
Извините, я так и не нашел способ заставить это работать. Если вы это сделаете, пожалуйста, дайте мне знать.   -  person yu_ominae    schedule 12.02.2013


Ответы (3)


Объедините два примера кода JS в:

/*Show add region dialogue*/
function AddNewRegion(ProjectID) {
    $('#simplemodal').modal({
        closeHTML: 'simplemodal-close',
        closeClass: 'simplemodal-close',
        onShow: function (dialog) {
            $('#NewRegion', dialog.data[0]).autocomplete({ source: '/Regions/FindRegions' } );
        }
    });
}

Если это не сработает, дайте мне знать.

person Eric Martin    schedule 20.08.2011
comment
Привет Эрик, спасибо за ваш ответ и извините, что так долго. Наконец-то я попробовал это, но список автозаполнения пользовательского интерфейса JQuery по-прежнему отображается только при первом открытии диалога. Есть ли что-нибудь еще, что вы можете придумать, что я мог бы попытаться сделать эту работу? - person yu_ominae; 24.08.2011

Код ниже может помочь вам

$(document).ready(function () {
    $("#NewRegion").autocomplete({
        source: function(request,response) {
            $.ajax({
                url: "/Regions/FindRegions",
                type: "POST",
                dataType: "json",
                data: { term: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { value: item.Country };
                    }))

                }
            })
        },
        messages: {
            noResults: "", results: ""
        }
    });
})
person kaushik    schedule 17.02.2014

Я тоже столкнулся с этой проблемой. Это можно решить, установив для параметра persist значение true при открытии модального диалога.

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

person jademe    schedule 19.01.2015