必须检查是否在textarea中写了一些遗产。为前('Zuzu max capsuni','Zuzu Max afine')等。
我的问题是我不知道如何为此做功能。我尝试使用这些单词创建一个数组,然后尝试使用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');
}
});
忘记放jsfiddle
答案 0 :(得分:2)
您需要遍历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/
答案 1 :(得分:0)
我的假设是数组“单词”包含您要检查的句子 对
首先将所有句子设为小写或大写。您可以使用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');
}
});
});
注意:您可以通过多种方式实现目标。这只是其中一种方式。
哪种方式最好?这取决于。
我希望你觉得这很有用。
干杯!
答案 2 :(得分:-2)
使用lodash或类似的库:https://lodash.com/docs#includes
或者如果您习惯使用ES7 / Babel:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes