必须检查是否在文本区域中写入了一些sentance。例如“祖祖马克斯”、“祖祖马克斯”等等。
我的问题是,我不知道如何使它的功能。我尝试用这些单词创建一个数组,然后尝试用indexOf()在textarea上找到它们。我没有成功地做到这一点,尤其是如果我用小写写的话。有人有解决办法吗?谢谢
<div>Button</div>
<textarea></textarea>
var words = ['Zuzu Max capsuni', 'Zuzu max piersici', 'Zuzu Max mere si pere', 'Zuzu Max afine', 'Zuzu Max stracciatella', 'Zuzu max natur'];
var text = $('textarea').val();
$('div').on('click', function(){
if(text.indexOf(words)){
console.log('match');
}
});忘了放小提琴
发布于 2015-10-03 15:43:12
您需要循环遍历words数组,并根据textarea字符串逐一检查它们。代码中的另一个问题是,如果找不到字符串,indexOf将返回-1,或者返回表示搜索字符串位置的number。
var textarea = $('textarea');
var words = ['Zuzu Max capsuni', 'Zuzu max piersici', 'Zuzu Max mere si pere', 'Zuzu Max afine', 'Zuzu Max stracciatella', 'Zuzu max natur'];
$('div').on('click', function(){
var text = textarea.val();
for (var i = 0, len = words.length; i < len; i++) {
if (text.indexOf(words[i]) > -1) {
console.log('match', words[i]);
}
}
});您可以在这里看到一个正在工作的小提琴:http://jsfiddle.net/22vuakp9/
不区分大小写:http://jsfiddle.net/22vuakp9/1/
发布于 2015-10-03 16:48:46
我的假设是,数组"word“包含要检查的句子。
首先,把所有的句子都用小写,或者uppercase.You可以用UnderscoreJS来做,或者你也可以自己做。
见下文:
var words = ['Zuzu Max capsuni', 'Zuzu max piersici', 'Zuzu Max mere si pere'];
//using underscoreJS . See link: http://underscorejs.org/#map
wordsLowerCase = _.map(words, function(word) {
return word.toLowerCase();
});
var text = $('textarea').val().toLowerCase();
$('div').on('click', function() {
wordsLowerCase.forEach(function(word) {
if (text.indexOf(word) > -1) {
console.log('match');
}
});
});
注意:有几种方法可以达到你的目标。这只是其中之一。
哪种方式是最好的?那得看情况。
我希望你觉得这有帮助。
干杯!
发布于 2015-10-03 15:38:21
使用lodash或类似的库来这样做:https://lodash.com/docs#includes
或者如果您对使用ES7/Babel:对象/数组/包括感到满意
https://stackoverflow.com/questions/32924340
复制相似问题