访问javascript对象中的属性的奇怪行为

ser*_*erg 10 javascript jquery jquery-ui jquery-ui-autocomplete

我正在尝试访问我的对象中的值:

<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);
}
Run Code Online (Sandbox Code Playgroud)

这是console.log电话会议的结果:

在此输入图像描述

这是奇怪的一点:

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

如果我打电话,$('input[name="address-search"]').val(ui.item.label);我只会得到Boston.任何想法为什么会这样?

rai*_*7ow 8

从jQuery UI自动完成文档:

选择

从菜单中选择项目时触发.默认操作是将文本字段的值替换为所选项的值.取消此事件可防止更新值.[...]

这里发生了什么:你将输入包含的值替换为'autocomplete'小部件 - 但随后小部件将自己替换它.)添加return false;到您的功能,使其工作.

作为旁注,您不必再次查找该元素的DOM:

this.value = ui.item.label;
Run Code Online (Sandbox Code Playgroud)

......应该做的伎俩.)