我有一个带有按钮的视图,可以通过局部视图打开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的值。
知道为什么我无法从自动填充的值中设置文本框值吗?
答案 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**