我在一个项目中使用jquery令牌输入。以下是我启动标记的方式。
$(document).ready(function(){
var defaultOptions = { searchDelay: 500,
minChars: 3,
};
$('.tokeninput').each(function () {
var field = $(this),
dataOptions = field.data('tokenoptions');
if(dataOptions){
defaultOptions = $.extend(defaultOptions, dataOptions);
}
console.log(defaultOptions);
field.tokenInput("url_to_live_search', defaultOptions);
});
});
然后,我使用";数据";我的输入字段中的属性
<input value="105" name="institution_id" required="required" class="tokeninput" data-tokenoptions="<?php echo json_encode(['tokenLimit'=>1,'allowFreeTagging'=>true]);?> type="text">
到目前为止运行良好。但是,当我试图通过数据选项传递prePopulate参数时,如下所示,我得到了一个错误。
<input value="105" name="institution_id" required="required" class="tokeninput" data-tokenoptions="<?php echo json_encode([tokenLimit] => 1, [allowFreeTagging] => 1, [prePopulate] => {"id":105,"name":"Institution Title"});?> type="text">
错误未捕获类型错误:无法使用"in"运算符在{"id":105,"name":"Institution Title"}中搜索"length">
我对这个问题进行了搜索,发现问题是因为没有解析JSON。我尝试对启动器进行一些修改。但它不起作用。任何帮助都将不胜感激。
我对启动器及其工作进行了以下更改。但我不确定这样做是否正确。你能做向导吗。
$(document).ready(function(){
var defaultOptions = { searchDelay: 500,
minChars: 3
};
$('.tokeninput').each(function () {
var field = $(this),
dataOptions = field.data('tokenoptions');
if(dataOptions){
var populateValue = dataOptions.prePopulate;
if(populateValue){
dataOptions = jQuery.grep(dataOptions, function(a) {
return a !== 'prePopulate';
});
populateValue = $.parseJSON(populateValue);
dataOptions = $.extend(defaultOptions, {prePopulate:[populateValue]});
}
defaultOptions = $.extend(defaultOptions, dataOptions);
}
console.log(defaultOptions);
field.tokenInput("url_to_live_search", defaultOptions);
});
});