我正在尝试通过频道名称过滤电视频道元素。我有一个html输入元素,从中可以得到它的值。然后,我遍历所有通道名称的数组,如果给定名称的indexOf返回值大于-1,它将为该通道分配一个“找到的”类。
但是,如果输入值长于4个字符,则indexOf返回-1。
输入值和通道名称都在utf-8中(它们都是由同一个php文件生成的;有些名称是西里尔字母,有些是英语)。但是,如果输入值仅包含英文字符,则indexOf可以正常工作。另外,如果我将任何频道名称登录到控制台,将其复制并粘贴到html输入中,indexOf也可以正常工作。
我可以想象两个字符串都有不同的字符集,但是为什么要有4个字符呢?我该如何解决?
这是我的代码:
function searchChannels(search,context){
//search is form input val()
//context is their parent container
var search = search.toLowerCase();
channels = context.find('.channel-item');
channels.removeClass('found');
for(i = 0;i < channels.length;i++){
currChnl = $(channels[i]);
channelName = currChnl.attr('data-name').toLowerCase();
if(channelName.indexOf(search) > -1) currChnl.addClass('found');
}
};
输入字符串的示例为Мульти(失败),Муль(作品)和Nat Geo Wild(作品)。频道名称分别为Мультиладния和Nat Geo Wild。有趣的是,当我从页面中复制通道名称或从代码检查器复制通道名称或data-name属性并将其粘贴到表单中时,它也起作用。
另一个示例:“1-ыйобр”在“1-ыйобразовательный”中的“1-ыйоб”工作失败