jquery自动完成源选项,函数返回标签和值

时间:2018-03-31 22:56:11

标签: javascript jquery jquery-ui

我正在使用jQuery 3.3.1和jQuery-ui 1.12.1。 我有一个输入字段,用户应该在数组的对象中进行选择,之前使用ajax调用检索并存储在变量中。

source option of autocomplete的文档说如果提供了一个函数来过滤术语,它应该返回一个字符串数组以供用户选择。

我想将视图(我显示给用户的字符串)与数据(它下面的对象)分开。我已经看到我可以从source选项返回一个对象数组{label: 'string to display', value: the_object},并且标签正确显示,但是当用户选择它时,它会变成一个匿名字符串{ {1}}。

在选择之后将标签字符串放在输入字段中会很棒,但是可以正确地显示条件,而无需任何替换;否则我想把场清理干净,我想用以下方法清除它:

[object Object]

select: function(event, ui) { var _content = ui.item; // Store the content of the field somewhere. $(event.target).val(''); } 不起作用,.val('')也不起作用。

这是一个测试小提琴:https://jsfiddle.net/xpvt214o/16284/

2 个答案:

答案 0 :(得分:1)

elements_that_match对象的值为您想要的字符串,而不是对象。

elements_that_match.push({"label" : _label, "value" : element_obj});

elements_that_match.push({"label" : _label, "value" : element_obj.name + ', ' + element_obj.country });

https://jsfiddle.net/xpvt214o/16303/

答案 1 :(得分:0)

我在@CertainPerformance答案的启发下找到的解决方案是使用不同的密钥(例如orig_obj)存储原始字典对象,以便我可以在select中直接使用它。方法

这样,当用户选择标签时会显示label字符串,但我们可以以原始形式操作对象。

小提琴:https://jsfiddle.net/xpvt214o/16356/