【发布时间】:2012-07-14 20:44:29
【问题描述】:
嗯,我是一个 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;
}
这个问题有两部分。
- 1 - 如何使数组不区分大小写?
例如- BRS201103-0783-CT-S 将给出与 brs201103-0783-ct-s AND Brs201103-0783-CT-s 或 MAGIC magic Magic MaGIc 相同的结果
基本上我需要类似 ignoreCase() 的数组,但我在 jQuery 和 JS 中找不到任何引用...
我试过toLowerCase() - 但它不能在阵列上工作(ittirating??)而且,它会解决混合情况吗?
- 2 - 如何使该功能仅识别零件或 元素的组合?
例如- 如果只有一种类型 "word" ,我希望它作为 "words" 传递,并且如果有人键入 "some word" 它应该传递(包含“单词”)
【问题讨论】:
-
对于 1,我只需将您的 JS 数组输入小写,然后调用
if (jQuery.inArray(jQuery("input:first").val().toLowerCase(), ar) != -1){,问题的第二部分似乎有点过于宽泛。具体规则是什么?word包含在words中可以,但some word不包含在words中。 -
感谢您的评论,我的意思是
some word包含word并且words包含word(字符串的一部分...) -
好吧,最奇怪的事情。输入
val().toLowerCase()将适用于“magic/MAgIc”之类的单词 - 但现在无论我如何输入字符串BRS201103-0783-CT-S(小写字母、大写字母或混合...... -
很可能是因为
magic在您的数组中是小写的,而BRS201103-0783-CT-S不是。检查亚历克斯的答案,他发布了一个简单的函数来将你的整个数组传递给小写。:) -
好的,我现在正在检查它,但只是为了更好地理解,如果我的数组都是小写的,那么每个输入案例都会通过吗?
标签: javascript jquery arrays contains case-insensitive