2011-08-06 31 views
0

我有打開經由局部視圖一個jquery對話的按鈕的圖。在對話框中,我有一個jquery自動完成調用,可以很好地列出我的值。問題是,一旦選擇了一個值並提交表單,表單字段中就沒有任何值。ASP.Nev MVC 3 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的值。

任何想法,爲什麼我無法從我的自動完成的值設置文本框的值?

回答

1

您應該使用.text()而不是.val()

val()改變元素的value屬性,而text()改變其內的文本。文本框的文本由元素的內部文本表示,因此只能使用text()來控制其文本。

+0

OMG。我不敢相信我一直在爲我應該找到的這樣一個小問題掙扎。非常感謝。 –

1

有在這一行錯誤請指正,並嘗試

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

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

是的,我貼錯了。語法錯誤不在實際的代碼中。 –

+0

-1,這不是真正的問題。 –