ASP.Net MVC 3 jQuery自动完成文本框值始终为空

时间:2011-08-06 23:43:55

标签: jquery asp.net-mvc-3 autocomplete

我有一个带有按钮的视图,可以通过局部视图打开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,我可以看到一旦选择了值,文本框中就没有任何值。我尝试使用自动完成调用中的“选择”选项通过.val(ui.item.id)在文本框中设置值,但不会设置文本框的值。如果我在“选择”选项中发出警报,它将显示ui.item.id的值。

知道为什么我无法从自动填充的值中设置文本框值吗?

2 个答案:

答案 0 :(得分:1)

您应该使用.text()代替.val()

val()更改元素的value属性,而text()更改其内部文本。文本框的文本由元素的内部文本表示,因此只能使用text()来控制文本。

答案 1 :(得分:1)

此行有错误请更正并尝试

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

//Corrected 
$("#Airline").val(ui.item.id); /**/ never gets set**