JQuery UI 自动完成在滚动菜单时在文本框中显示 [对象对象]
JQuery UI Autocomplete shows [Object object] in textbox while scrolling the menu
我在表单上有一个textbox
,我像这样附加了一个jquery ui autocomplete
:
$("#recieverNumber").autocomplete({
source: function (request, response) {
$.ajax({
dataType: "json",
type: 'Get',
url: myServiceUrl,
success: function (data) {
$('input.suggest-user').removeClass('ui-autocomplete-loading'); // hide loading image
var result = [];
data.forEach(function (value, index) {
result.push({ value: value, label: value.Name });
});
response(result);
},
error: function (data, err, message) {
$('input.suggest-user').removeClass('ui-autocomplete-loading');
}
});
},
messages: {
noResults: '',
results: function () { }
},
select: function (event, ui) {
recievers.push(ui.item.value);
notifyRecieversChanged();
$(this).val('');
return false;
}
});
如您所见,我从服务器端服务获取其源代码,然后构建一个带有值和标签的对象数组。一切正常,但是每当自动完成菜单中有多个项目时,我想滚动菜单以找到我在textbox
中看到的所需项目[Object object]
而不是该项目的标签。我做错了什么吗?
编辑
数组中的第一个参数response
在选择下拉列表中呈现,而value
(作为第二个参数)应该在进行选择时返回。如果未定义value
,则将改为返回label
。
Json(请参阅问题下方的评论):
{
{Name:'John',Tel:'111111111'},
{Name:'Sara',Tel:'2222222222'}
}
尝试:
成功回调:
success : function(data){
data.forEach(function (value, index) {
// add 'data', remove 'value', select will be rendered from 'label'
// If you want display value (Tel) after selection, use this:
// result.push({label:value.Name, value:value.Tel, data:value });
result.push({label:value.Name, data:value });
});
response(result);
}
选择回调:
select: function (event, ui) {
// use 'data' instead of value:
recievers.push(ui.item.data);
// ...
}
JSFiddle
最终,您可以通过回显已经准备好的 Json 使其更简单。
.PHP:
echo json_encode(
array(
array(
'label'=>'John',
'data'=>array(
'Name'=>'John', 'Tel'=>'111111111'
)
),
array(
'label'=>'Sara',
'data'=>array(
'Name'=>'John', 'Tel'=>'2222222222'
)
)
)
);
然后:
success: function (data) {
response(data);
}
// ...
select: function (event, ui) {
recievers.push(ui.item.data);
// ...
}
我遇到了同样的问题。滚动列表时,我在文本字段中看到"[对象对象]"。覆盖默认焦点行为对我有用:
focus: function (event, ui) {
event.preventDefault();
},
https://api.jqueryui.com/autocomplete/#event-focus
相关文章:
- 嵌套对象文本访问父级
- 如何从jQuery对象文本正确调用服务器端ASP.NET并将数据返回给jQuery
- 对象内部函数内的对象文本的范围
- Angular promise回调不是在构造函数方法内部触发,而是在对象文本方法中触发
- 如何在Javascript对象文本中转义Backslash
- 追加到对象文本
- 无法更新 Javascript 对象文本中的值,然后更新页面
- 动态设置对象文本值
- 如何将输入值与对象文本中的引用值进行比较
- SVG 外来对象文本未显示在移动浏览器中
- 将命名空间与对象文本表示法和继承一起使用
- 变量作为 JavaScript 对象文本中的属性名称
- 对象文本中的继承
- 在 Javascript 中将对象文本编码为 URL 查询字符串
- 如何平展对象文本属性
- 如何使用保存数组名称的变量将对象文本添加到数组
- 具有就地值定义的 JavaScript 对象文本
- 在 JavaScript 对象文本中组织方法和属性的最佳方式
- 获取对象文本中的属性值
- 对象文本可重用函数