【发布时间】:2014-12-15 12:03:47
【问题描述】:
我正在使用 Select2 3.5.1。使用此插件,我可以成功加载远程数据。但是,我今天在这里提出一个问题以改进此搜索。以下是了解我想要做什么的分步说明:
- 使用远程数据加载(使用 ajax)设置 Select2。
- 单击 Select2 输入并搜索内容。
- 会出现加载,几秒钟后您会看到结果列表。
- 单击列出的结果之一 - 结果框随即消失。
- 如果您再次单击搜索框,列表将为空,您需要再次键入一些新文本才能获得结果列表。
是否有可能当我们再次单击搜索框时,先前搜索的结果列表会重新出现而无需任何 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);
【问题讨论】:
标签: javascript jquery ajax jquery-select2