gpt4 book ai didi

javascript - Select2 - Ajax 搜索 - 记住最后的结果

转载 作者:数据小太阳 更新时间:2023-10-29 04:10:28 24 4
gpt4 key购买 nike

我正在使用 Select2 3.5.1。使用此插件,我可以成功加载远程数据。但是,我今天在这里提出一个问题以改进此搜索。这是了解我想做什么的分步操作:

  1. 设置一个带有远程数据加载的 Select2(使用 ajax)。
  2. 点击 Select2 输入并搜索内容。
  3. 加载将出现,几秒钟后您将看到结果列表。
  4. 单击其中一个列出的结果 - 结果框随后会消失。
  5. 如果再次单击搜索框,列表将为空,您需要再次键入一些新文本才能获得结果列表。

有没有可能当我们再次点击搜索框时,没有任何ajax调用,之前搜索的结果列表重新出现?然后,如果用户删除一个字符或更改他的搜索条件,它将再次触发 ajax 搜索。

如果可能,我们将如何编码?

我希望我的问题很清楚,如果您有任何问题,请告诉我。谢谢。

这是一个非常简单的代码,我们在其中进行搜索并返回结果列表。它并没有真正进行搜索,但是当您键入某些内容时它确实会返回一个列表。我不确定如何使用其中一个响应中提到的 initSelection。

<html>
<head>
<title>
Test page for ajax cache
</title>
<script type='text/javascript' src='../../resources/javascript/jquery/jquery-1.9.1.min.js'></script>
<link type='text/css' href='../../resources/javascript/select2/select2.css' rel='stylesheet' />
<script type='text/javascript' src='../../resources/javascript/select2/select2.js'></script>

<script>
$(document).ready(function(){
$('#select').select2({
ajax: {
type: 'POST',
url: 'ajax.php',
dataType: 'json',
data: function(term, page){
return {
autoc: 'country',
term: term
}
},
results: function(data, page){
console.log(data);

return( {results: data.results} );
}
},
placeholder: 'Search something',
minimumInputLength: 3,
width: '333'
});
});
</script>
</head>

<body>
<input type='text' name='inputdata' id='select' />
</body>
</html>

非常简单的 ajax.php 调用:

<?php
$results2['more'] = false;
$results2['results'][0] = array('id'=> "1", 'text'=> "California");
$results2['results'][1] = array('id'=> "2", 'text'=> "Canada");
$results2['results'][2] = array('id'=> "2", 'text'=> "Someword");
$results2['results'][3] = array('id'=> "2", 'text'=> "Alberta");
$results2['results'][4] = array('id'=> "2", 'text'=> "New York");

echo json_encode($results2);

最佳答案

我又看了一遍你的帖子。我上次误会你了。

解决方案就在这里。

   $(document).ready(function () {
$('#select').select2({
// this part is responsible for data caching
dataCache: [],
query: function (q) {
var obj = this,
key = q.term,
dataCache = obj.dataCache[key];

//checking is result in cache
if (dataCache) {
q.callback({results: dataCache.results});
} else {
$.ajax({
url: 'ajax.php',
data: {q: q.term},
dataType: 'json',
type: 'POST',
success: function (data) {
//copy data to 'cache'
obj.dataCache[key] = data;
q.callback({results: data.results});
}
})
}
},
placeholder: 'Search something',
width: '333',
minimumInputLength: 3,
});
// this part is responsible for setting last search when select2 is opening
var last_search = '';
$('#select').on('select2-open', function () {
if (last_search) {
$('.select2-search').find('input').val(last_search).trigger('paste');
}
});
$('#select').on('select2-loaded', function () {
last_search = $('.select2-search').find('input').val();
});
});

关于javascript - Select2 - Ajax 搜索 - 记住最后的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26466788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com