jQuery自动完成隐藏输入变量的值的源代码

Source of a jQuery autocomplete being the value of a hidden input variable

本文关键字:变量 源代码 输入 隐藏 jQuery      更新时间:2023-09-26

我正在使用jQuery的自动完成,但是我在获取源代码引用页面上隐藏输入的值时遇到了问题。

这是隐藏的输入字段:

<input type="hidden" id="array_activities" value="[{ label: 'Football', value: '1' }, { label: 'Tennis', value: '2' }, { label: 'Running', value: '3' }]">

这是javascript:

$("#search").live("focus", function (event) {
    $(this).autocomplete({
        close: function( event, ui ) { area_input(); },
        source: $("#array_activities").val()
    });
});

但是没有自动完成。

如果我将源选项的值显式地更改为隐藏输入的值(即将'$("#array_activities").val()'替换为

)

'[{ label: 'Football', value: '1' }, { label: 'Tennis', value: '2' }, { label: 'Running', value: '3' }]'),

它工作得很好。

任何想法?

在将其分配为源文件之前对其进行解析

source: JSON.parse( $("#array_activities").val() )

由于预计源为array of objectsnot a string

编辑

JSON字符串带单引号是无效的语法。所有的属性都必须用双引号括起来,以保证语法的正确性。

所以把你的值改成这样

value='[{ "label": "Football", "value": "1" },
      { "label": "Tennis", "value": "2" }, { "label": "Running", "value": "3" }]'

小提琴

如果您希望您的代码按原样运行,那么您可以尝试使用

var arr = eval($("#array_activities").val());

但是使用eval被认为是不好的做法。

查看更多信息