gpt4 book ai didi

javascript - 如何显示查询回调数据结果只以开头

转载 作者:行者123 更新时间:2023-11-30 16:10:40 25 4
gpt4 key购买 nike

原始代码:

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/

我用这个 fiddle 做了实验:

$('#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()); }

关于javascript - 如何显示查询回调数据结果只以开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36300962/

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