访问JavaScript对象属性时出现奇怪的行为

10

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

<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。有任何想法为什么会发生这种情况吗?


可能输入框设置了最大长度,当输入的值超过最大长度时会被截断? - WTK
检查输入大小属性。 - Zdeněk Mlčoch
标签是以字符串形式存储的吗?如果不是,那么我有一种奇怪的感觉,逗号可能起了作用。 - Luke
1
@Tal的size属性与此无关,但maxlength属性是有关的。 - raina77ow
1
它在我制作的演示中运行良好;http://jsfiddle.net/RLGkN/ - Stefan
显示剩余4条评论
1个回答

8

来自jQuery UI自动完成文档:

select

当从菜单中选择一个项目时触发。默认操作是用所选项目的值替换文本字段的值。取消此事件将阻止更新该值。[...]

这里发生了什么:您替换了由“自动完成”小部件包装的输入中的值 - 但是然后小部件会用自己来替换它。)将return false;添加到您的函数中可使其正常工作。

顺便说一句,您无需再次查找该元素的DOM:

this.value = ui.item.label;

... 应该就能解决问题了。)


哎呀,+1,你比我先了 :) - WTK
这就是解决方案。谢谢! - sergserg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接