我在项目中使用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"
中。
答案 0 :(得分:1)
如果我理解问题,这可以胜任:
$('#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>
答案 1 :(得分:-1)
。当你输入像“Stackoveflow”这样的单词时如何制作它 在单词array ['stackoverflow']中有单词返回结果 在输入寄存器中。
您需要先将所有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;
}));