ASP.Nev MVC 3 Значение jQuery для автозаполнения в текстовом поле всегда пусто - PullRequest
0 голосов
/ 07 августа 2011

У меня есть вид с кнопкой, которая открывает диалоговое окно jquery через частичное представление.В этом диалоге у меня есть вызов автозаполнения jquery, который отлично работает для перечисления моих значений.Проблема в том, что после выбора значения и отправки формы в поле формы нет значения.

<fieldset>
            @Html.LabelFor(m => m.Airline)
            @Html.TextBoxFor(m => m.Airline)
            @Html.ValidationMessageFor(m => m.Airline)
        </fieldset>

$(function () {

    $("#Airline").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: '/app/FlightLeg/AirlineSearch', type: "GET", dataType: "json",
                data: { term: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item.Name + ' (' + item.Code + ')', value: item.Name, id: item.Id };
                    }))
                }
            })
        },
        minLength: 2,
        select: function (event, ui) {
            console.debug(ui.item.id); **//has the expected value**
            $("#Airline").val(ui.item.id)); /**/ never gets set**
        }

    });

Используя firebug, я вижу, что значение не присваивается текстовому полю после того, как значениевыбрал либо.Я попытался использовать опцию «select» в вызове autocomplete, чтобы установить значение в текстовом поле через .val (ui.item.id), но он не установит значение текстового поля.Если я добавлю предупреждение в опцию «выбрать», оно покажет значение ui.item.id.

Есть идеи, почему я не могу установить значение текстового поля из значения автозаполнения?

Ответы [ 2 ]

1 голос
/ 07 августа 2011

В этой строке есть ошибка, пожалуйста, исправьте ее и попробуйте

//Extra bracket at the end
$("#Airline").val(ui.item.id)); /**/ never gets set**

//Corrected 
$("#Airline").val(ui.item.id); /**/ never gets set**
1 голос
/ 07 августа 2011

Вы должны использовать .text() вместо .val().

val() изменяет атрибут значения элемента, в то время как text() меняет его внутренний текст.Текст текстового поля представлен внутренним текстом элемента, поэтому только с помощью text() вы можете управлять его текстом.

...