好吧,我更像是一个PHP人员,除了简单的设计相关操作之外,我的JS技能几乎没有任何JS,所以对不起,如果我问的那么明显。
以下操作在PHP中是轻而易举的(也可能在JS中 - 但我在这里用不熟悉的语法进行斗争......)
这是某种输入验证
var ar = ["BRS201103-0783-CT-S", "MAGIC WORD", "magic", "Words", "Magic-Word"];
jQuery(document).ready(function() {
jQuery("form#searchreport").submit(function() {
if (jQuery.inArray(jQuery("input:first").val(), ar) != -1){
jQuery("#contentresults").delay(800).show("slow");
return false;
}
这个问题有两部分。
E.g。 - BRS201103-0783-CT-S
会得到与brs201103-0783-ct-s
和Brs201103-0783-CT-s
或MAGIC magic Magic MaGIc
基本上我需要像ignoreCase()这样的数组,但我在jQuery和JS中找不到任何引用......
我试过toLowerCase()
- 但是它没有在数组上工作(ittirating ??)而且,它会解决混合大小写吗?
E.g。 - 如果仅键入"word"
,我希望将其作为"words"
传递,如果有人键入"some word"
则应该传递(包含“word”)
答案 0 :(得分:8)
您可以将数组处理为完全小写,并将输入小写,以便indexOf()
能够像执行不区分大小写的搜索一样工作。
您可以使用toLowerCase()
小写字符串,如您已经想到的那样。
要做一个数组,你可以使用......
arr = arr.map(function(elem) { return elem.toLowerCase(); });
您可以检查子字符串,例如......
// Assuming you've already transformed the input and array to lowercase.
var input = "word";
var words = ["word", "words", "wordly", "not"];
var found = words.some(function(elem) { return elem.indexOf(input) != -1; });
或者,您可以跳过此实例,在检查toLowerCase()
之前,通过调用每个elem
上的indexOf()
将数组转换为全小写。
some()
和map()
,但对于polyfill来说是微不足道的。链接文档中提供了每种填充的示例。
正如Fabrício Matté所指出的那样,你可以在这里使用jQuery等价物,$.map()
Array.prototype.map()
和$.grep()
length
属性Array.prototype.some()
}。然后,您将免费获得浏览器兼容性。
答案 1 :(得分:1)
要检查数组是否包含一个不区分大小写的元素,我使用了以下代码:
ret = $.grep( array, function (n,i) {
return ( n && n.toLowerCase().indexOf(elem.toLowerCase())!=-1 );
}) ;
这是一个小提琴 array match case insensitive