有没有办法通过Jquery的select2
插件使用HTML5的localstorage方法?现在,当我输入数据并关闭浏览器/选项卡时,所有输入的数据都消失了,这并不是最佳选择,因为如果您不记得输入的内容,它可能会造成困惑
我的select2代码如下所示:
$(".select").select2({
minimumInputLength: 1,
multiple: true,
query: function(query){
$.getJSON( 'url path to remote API', {
name:query.term,
featured:true
}, function(results){
var data = {results: []};
$.each(results.data, function(index, item){
data.results.push({id: item.artist_id, text: item.name});
});
query.callback(data);
} );
}
});
任何帮助都非常感谢
最佳答案
试试看:http://jsfiddle.net/7267rkxy/12/
我为您注释了代码,以对发生的事情进行一些解释,您应该可以将data
选项换成query
选项,它仍然可以正常工作
PS:我注意到您的回答问题均未标记为“接受”,如果有人给您您喜欢或对您有用的答案,则应通过单击答案旁边的复选框将其回答标记为“已接受”
的HTML
<!-- setting a hard width for example -->
<input type="text" class="select" style="width:200px;" value="" />
JS
// set value property to local storage value
$(".select").val(localStorage.s2options);
$(".select").select2({
minimumInputLength: 1,
multiple: true,
data: [{id: 1, text: 'option1'},{id: 2, text: 'option2'},{id: 3, text: 'option3'}], //sample data
initSelection: function (element, callback) {
// initSelection only fires when there is something in the value property
callback($.parseJSON(element.val()));
}
}).on('change', function(info){
// checking if we have anything stored in local storage
var s2options = localStorage.s2options ? JSON.parse(localStorage.s2options) : [];
// add / remove options
if (info.added) {
s2options.push(info.added);
} else if (info.removed) {
s2options = s2options.filter(function(opt) {
return opt.id != info.removed.id;
});
}
// save selections to local storage
localStorage.s2options = JSON.stringify(s2options);
});