【发布时间】:2014-03-27 02:26:52
【问题描述】:
我正在尝试遍历一组项目,看看是否有任何匹配项然后显示它们。好吧,如果我输入它们都显示的任何字符。
(sensitive == false ? RegExp('^'+this.value,'i').test(source[i]) : RegExp('^'+this.value).test(source[i]) )
这是我的条件,但如果数组中的每个项目 (source[i]) 出现 this.value = a。有没有办法让这个更严格?
示例
如果数组是(使用 jquery 自动完成示例数组)
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
element.addEventListener('keypress', function (e) {
var dd = document.getElementById('fake_dropdown');
for (i = 0; i < availableTags.length; i++) {
var li;
if ((sensitive == false ? RegExp('^' + this.value, 'i').test(availableTags[i]) : RegExp('^' + this.value).test(availableTags[i]))) {
li = document.getElementById('auto_id_' + (i + 1));
li.style.display = "block";
} else {
li = document.getElementById('auto_id_' + (i + 1));
li.style.display = "none";
}
var liLoop = dd.getElementsByTagName('li');
for (var j = 0; j < liLoop.length; j++) {
if (liLoop[j].style.display == "block") break;
else dd.style.display = "none";
}
}
}, false);
更新了更多代码
所有这些都出现了。为什么是这样?还有为什么BACKSPACE 不被认为是按键,因为如果我单击退格键,它不会重新评估条件。
【问题讨论】:
-
你能分享更多关于如何获得结果的代码
-
是的,等等,我会添加更多。它只是非常非常冗长
-
@EasyBB 抱歉,
works for a not other characters though是什么意思? -
@EasyBB 因为
dd.style.display = 'none'而无法工作,请参阅jsfiddle.net/arunpjohny/2X42T/2
标签: javascript regex arrays