2012-12-19 91 views
10

我想在我的對象訪問值:奇怪的行爲在JavaScript對象訪問屬性

<input type="text" name="address-search" 
     placeholder="43 Roxling Drive Boston, MA" 
     class="ui-autocomplete-input ui-corner-all" autocomplete="off"> 

select: function(event, ui) { 
    console.log(ui); 
    $('input[name="address-search"]').val(ui.item.label); 
} 

這裏是console.log調用的結果:

enter image description here

這裏的奇怪的位:

如果我console.log(ui.item.label)我得到:Boston, Massachusetts, United States

如果我打電話給$('input[name="address-search"]').val(ui.item.label);我只能得到Boston。任何想法爲什麼發生這種情況?

+0

可能輸入有最大長度設置,當設置的值太長時值會被修整? – WTK

+0

檢查輸入大小屬性。 –

+0

標籤是否存儲爲字符串?如果不是那麼我有一個有趣的感覺,逗號是不好的 – Luke

回答

8

從jQuery用戶界面自動完成DOC:

當從菜單中選擇的項目選擇

觸發。缺省操作 用於將文本字段的值替換爲選定的 項目的值。取消此事件可防止更新值。 [...]

這裏發生了什麼:將輸入中的值替換爲'autocomplete'窗口小部件 - 但接着窗口部件自行替換它。 )將return false;添加到您的功能,使其工作。

一點題外話,你不必再仰望DOM爲元素:

this.value = ui.item.label; 

...應該做的伎倆。 )

+0

呃+1,你打我:) – WTK

+0

這是解決方案。謝謝! – sergserg