我在我的项目中使用jquery textcomplete。是否可以仅使用小写字母使用字数组返回输入寄存器。我在谷歌翻译中查看了近似功能,输入结果也没有返回输入。在那里,搜索是使用任何单词条目寄存器执行的,但只会以小写形式返回。如何使它当你输入像"Stackoveflow"
这样的单词时,单词数组['stackoverflow']
中的单词返回输入寄存器中的结果。
$('.form-control').textcomplete([{
words: ['stackoverflow', 'ҳайрат', 'english', 'маҳорат'],
match: /(^|\S*)([^\u0000-\u007f]{2,}|\w{2,})$/,
search: function(term, callback) {
this.words = this.words.map( s => s.toLocaleLowerCase() );
callback($.map(this.words, function(word) {
return word.indexOf(term.toLocaleLowerCase()) === 0 ? word : null;
}));
},
index: 2,
replace: function(word) {
return word + ' ';
}
}]);
如何在数组中键入时返回相同的结果,单词将为小写。例如:
输入:Stackoverflow, STACKOVERFLOW, Ҳайрат, ҲАЙРАТ
输出:Stackoverflow, STACKOVERFLOW, Ҳайрат, ҲАЙРАТ
$('.form-control').textcomplete([{
words: ['stackoverflow', 'ҳайрат', 'english', 'маҳорат'],
match: /(^|\S*)([^\u0000-\u007f]{2,}|\w{2,})$/,
search: function(term, callback) {
this.words = this.words.map( s => s.toLocaleLowerCase() );
callback($.map(this.words, function(word) {
return word.indexOf(term.toLocaleLowerCase()) === 0 ? word : null;
}));
},
index: 2,
replace: function(word) {
return word + ' ';
}
}]);
此代码将在任何情况下搜索键入的单词,但在带有单词的数组中以小写形式返回。例如,如果我们输入"English"
最终结果将是"english"
。需要的结果必须在输入案例"English"
。
如果我理解问题,这可以做到这一点:
$('#textcomplete').textcomplete([{
words: ['stackoverflow', 'ҳайрат', 'english', 'маҳорат'],
match: /(^|\S*)([^\u0000-\u007f]{2,}|\w{2,})$/,
search: function(term, callback) {
callback($.map(this.words, function(word) {
if (word.indexOf(term.toLocaleLowerCase()) !== 0)
return null;
if (term[term.length-1] === term[term.length-1].toLocaleUpperCase())
return word.toLocaleUpperCase(); // last char is upper = uppercase
if (term[0] === term[0].toLocaleUpperCase())
return word.charAt(0).toLocaleUpperCase() + word.slice(1); // first char is upper = capitalized
return word; // default; is lowercase
}));
},
index: 2,
replace: function(word) {
return word + ' ';
}
}]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.textcomplete/1.8.4/jquery.textcomplete.min.js"></script>
<textarea id="textcomplete"></textarea>
。如何使它当你输入像“Stackoverflow”这样的单词时,在单词array ['stack overflow']中有单词会在输入寄存器中返回结果。
您需要先将所有words
转换为localeLowerCase(如果它们尚未存在)
this.words = this.words.map( s => s.toLocaleLowerCase() );
你可以把这条线放在callback
之前
此外,在检查时,您还可以将term
转换为Locale-Lower-Case。
this.words = this.words.map( s => s.toLocaleLowerCase() );
callback($.map(this.words, function(word) {
return word.indexOf(term.toLocaleLowerCase()) === 0 ? word : null;
}));