如何显示查询回调数据结果仅从开始
How to show query call back data results only start with
原始代码:
var data = {results: []}
data.results = result;
query.callback( data);
用于加载数据的原始互联网代码:(开始数据的任何修改)
$("#e5").select2({
minimumInputLength: 1,
query: function (query) {
var data = {results: []}, i, j, s;
for (i = 1; i < 5; i++) {
s = "";
for (j = 0; j < i; j++) {s = s + query.term;}
data.results.push({id: query.term + i, text: s});
}
query.callback(data);
}
});
匹配器功能:
$("#e17").select2({
matcher: function(term, text) { return text.toUpperCase().indexOf(term.toUpperCase())==0; }
});
目前我使用这种方式:
var $elem = $( ".auto{!randomJsIden}" );
$elem.select2({
minimumInputLength: 1,
placeholder: "No value selected",
allowClear : {!allowClear},
query: function (query) {
queryData{!randomJsIden}(query);
},
createSearchChoice:function(term, data) {
if ({!syncManualEntry} == true) {
return {id:term, text:term};
}
},
matcher: function(term, text) { return text.toUpperCase().indexOf(term.toUpperCase())==0; },
sortResults: function(results, container, query) {
if (query.term) {
return results.sort(function(a, b) {
if (a.text.length > b.text.length) {
return 1;
} else if (a.text.length < b.text.length) {
return -1;
} else {
return 0;
}
});
}
return results;
}
});
------------------------------
------------------------------
function queryData{!randomJsIden}(query){
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.AutoCompleteV2_Con.getData}','{!sObjVal}','{!labelFieldVar}','{!valueFieldVar}',query.term,
function(result, event){
//if success
if(event.status){
var data = {results: []}
data.results =result;
query.callback( data);
}
else{
alert('Invalid Field/Object API Name : '+event.message);
}
},
{escape: true}
);
}
目前我正在得到结果,如果我键入字母a,它显示的结果包含a,我想显示以a开头的结果。
更新问题:
<script>
var v2{!randomJsIden}
function permute(input, permArr, usedChars) {
var i, ch;
for (i = 0; i < input.length; i++) {
ch = input.splice(i, 1)[0];
usedChars.push(ch);
if (input.length === 0) {
permArr.push(usedChars.slice());
}
permute(input, permArr, usedChars);
input.splice(i, 0, ch);
usedChars.pop();
}
return permArr;
}
var prevVal{!randomJsIden};
function autocompleteV2{!randomJsIden}(){
var v2=this;
jQuery(function($){ //on document.ready
v2.init($)
});
}
autocompleteV2{!randomJsIden}.prototype={
init : function($){
var $elem = $( ".auto{!randomJsIden}" ).select2({
minimumInputLength: 3,
placeholder: "No value selected",
allowClear : {!allowClear},
query: function (query) {
queryData{!randomJsIden}(query);
},
createSearchChoice:function(term, data) {
if({!syncManualEntry} == true){
return {id:term, text:term};
}
},
matcher: function (term, text) {
if (term.length === 0) return true;
texts = text.split(" ");
allCombinations = permute(texts, [], []);
for (i in allCombinations) {
if (allCombinations[i].join(" ").toUpperCase().indexOf(term.toUpperCase()) === 0) {
return true;
}
}
return false;
},
sortResults: function (results, container, query) {
if (query.term) {
// use the built in javascript sort function
return results.sort(function (a, b) {
if (a.text.length > b.text.length) {
return 1;
} else if (a.text.length < b.text.length) {
return -1;
} else {
return 0;
}
});
}
return results;
}
});
$elem.on("select2-selecting", function(e) {
$('.hiddenField{!randomJsIden}').val(e.val);
});
$elem.on("select2-removed", function(e) {
$('.hiddenField{!randomJsIden}').val('');
});
if('{!cacheField}' !=''){
$elem.select2("data", {id: "{!targetFieldVar}", text: "{!cacheField}"})
}
},
triggerSearch :function(val){
if(prevVal{!randomJsIden} != val){
$=jQuery;
prevVal{!randomJsIden} = val;
var select = $('input.auto{!randomJsIden}');
var search = $('.select2-input')
select.select2('open');
search.val(val);
search.trigger("input");
}
}
}
/*
*This method queries data according to the passed parameter
*and populates the combobox accordingly
***/
function queryData{!randomJsIden}(query){
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.AutoCompleteV2_Con.getData}','{!sObjVal}','{!labelFieldVar}','{!valueFieldVar}',query.term,
function(result, event){
//if success
if(event.status){
var data = {results: []}
data.results = result;
query.callback( data);
}
else{
alert('Invalid Field/Object API Name : '+event.message);
}
},
{escape: true}
);
}
</script>
<apex:inputText style="{!Style}" id="hiddeninput" styleClass="auto{!randomJsIden}" value="{!cacheField}" />
<apex:outputPanel id="hiddenPanel">
<apex:inputText value="{!targetField}" id="hiddenField"
styleClass="hiddenField{!randomJsIden}" style="display:none"/>
</apex:outputPanel>
<script>v2{!randomJsIden} = new autocompleteV2{!randomJsIden}({});</script>
</apex:component>
仍然无法获得结果。我使用的是select2 3.5.4中的最新版本,请帮助我。
请帮帮我。
更新我的问题:
http://jsfiddle.net/Lnf8j/289/
我试验过这种小提琴:
$('#placeSelect').select2({
width: '100%',
allowClear: true,
multiple: true,
maximumSelectionSize: 1,
placeholder: "Click here and start typing to search.",
data: [
{ id: 1, text: "Ford" },
{ id: 2, text: "Dodge" },
{ id: 3, text: "Mercedes" },
{ id: 4, text: "Jaguar" }
],
matcher: function (term, text) {
if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
return true;
}
return false;
}
});
我的成绩不错
如果我通过这个将其更改为数据
query: function (query) {
queryData{!randomJsIden}(query);
},
(OR)
var data = {results: []}
data.results = result;
query.callback( data);
我没有取得好成绩这里需要更改一些内容以获得良好的结果
相应地更改匹配器函数,如下所示:
matcher: function(term, text) { return text.toUpperCase().startsWith(term.toUpperCase()); }
更改匹配器函数(也称为"谓词")以仅测试text
中的第一个字符。有几种方法可以做到这一点,但我认为最好的方法是使用正则表达式。正则表达式是一种可以用于字符串的搜索项类型。在这种情况下,您可以使用类似于term = /^a/i
:的RegExp
/
:启动正则表达式^
:此正则表达式仅在文本开头匹配a
:如果正则表达式在文本的直接开头看到一个文字字符a
(因为我们编写了^
),那么它就会成功/
:结束正则表达式i
:正则表达式在中区分大小写;它可以匹配CCD_ 10或CCD_
如果RegExp对象term
与字符串text
:匹配,则此函数将返回true
function matcher(term, text) {
if (text.match(term)) {
return true;
} else {
return false;
}
}
当然,从那时起,您可以不写return matcher(term, text))
,而只写return text.match(term)
。但要注意,正结果不仅仅是true
值(请参阅String.protype.match的文档)。
相关文章:
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 无法使用streams/highland.js从mongodb的结果中获取数据
- 从 Angular 数据工厂中的 HTTP POST 请求接收未定义的结果
- 停止 jQuery 自动完成以过滤/搜索结果并填充整个源数组数据
- 有没有一个简单的解决方案可以根据3个数据找到结果
- 将base64图像数据作为src分配给图像时,Firefox和Chrome上的结果不一致
- jqueryajax帖子将我发送到操作页面,并且不会显示结果数据
- OrientDB:在服务器端函数中访问查询结果数据
- 如何在从 ajax 获取时拆分结果数据
- 对 asmx Web 服务的 Ajax/json 调用成功完成,但无法显示结果数据
- 从 AJAX JSON 结果数据填充选择列表
- 如何将查询结果数据传递到Express.js和Mysql中的视图
- Json序列化器vs .net序列化类的JQuery AJAX结果数据
- 如何使用ajax在select2中显示多个结果数据
- 我如何通过电子邮件发送包含mysql结果数据的html表在php中的一个按钮
- 等待Callback和我们的结果数据从这个函数中取出另一个进程
- 如何在Angular promise请求中获取结果数据
- Rails:用搜索框中的结果数据填充表
- 没有使用流星http包获取结果数据
- 将对象压入数组,然后通过结果数据结构进行循环