【问题标题】:ASP.Nev MVC 3 jQuery Autocomplete Textbox Value Always BlankASP.Net MVC 3 jQuery 自动完成文本框值始终为空
【发布时间】:2011-08-07 07:50:40
【问题描述】:

我有一个带有通过局部视图打开 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**
        }

    });

使用萤火虫,我可以看到,一旦选择了一个值,文本框也没有任何值。我尝试在自动完成调用中使用“选择”选项通过 .val(ui.item.id) 设置文本框中的值,但它不会设置文本框的值。如果我在“选择”选项中添加警报,它将显示 ui.item.id 的值。

知道为什么我不能根据我的自动完成值设置文本框值吗?

【问题讨论】:

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


    【解决方案1】:

    您应该使用.text() 而不是.val()

    val() 改变一个元素的值属性,而text() 改变它的内部文本。文本框的文本由元素的内部文本表示,因此只有使用text() 才能控制其文本。

    【讨论】:

    • 天啊。我不敢相信我已经为这样一个我应该发现的小问题苦苦挣扎了这么久。非常感谢。
    【解决方案2】:

    此行有错误,请更正并尝试

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

    【讨论】:

    • 是的,我粘贴错了。语法错误不在实际代码中。
    猜你喜欢
    • 2017-08-26
    • 2020-05-07
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多