JavaScript预测输入/下拉

时间:2010-08-17 12:25:58

标签: javascript

我有一个文本输入,有人可以开始输入,然后在列表下方根据你的输入匹配填充。

1)目前我正在使用它来检查'包含':

if(listToRedo[i].value.indexOf(text) != -1){

但问题是它似乎区分大小写,我该如何更改?

2)onkeyevent,onkeypress,onkeydown是否接受删除键操作?另外哪一个最适合用于此活动。

3 个答案:

答案 0 :(得分:2)

if(listToRedo[i].value.toLowerCase().indexOf(text.toLowerCase()) != -1){

如果我理解正确,上述内容应适用于您的情况。

答案 1 :(得分:2)

  1. 使用两个列表并将其中一个元素的所有元素转换为小写。然后,在进行查找之前,您也可以将字段中的文本转换为小写。

  2. 每个键都会调用
  3. onkeydownonkeyup,甚至是光标键,移位等。

答案 2 :(得分:2)

  

1)...但问题是它似乎区分大小写,我该如何更改?

您有两种选择。第一种是将两个字符串转换为小写,如下所示:

if (listToRedo[i].value.toLowerCase().indexOf(text.toLowerCase()) != -1) {

或使用不区分大小写修饰符(i)的正则表达式:

var reg = new RegExp(text, "i");
if (listToRedo[i].value.search(reg) != -1) {

第二种方法可能会引入问题,但是,如果测试字符串包含在正则表达式中具有特殊功能的字符,则需要事先转义这些字符。第一种方法更适合基本搜索。

  

2)onkeyevent,onkeypress,onkeydown是否接受删除键操作?另外哪一个最适合用于此活动。

onkeydown onkeyup 将触发删除键。至少Chrome和IE中的 onkeypress 不会触发删除键,只会触发以下键:

  • 字母:A - Z(大写和小写)
  • 数字:0 - 9
  • 符号:! @#$%^& *()_ - + =< [] {} ,. /? \ | '`“〜
  • 系统:ESC,SPACEBAR,ENTER

最好使用 onkeypress onkeydown 的组合,并检查输入值的变化,因为这些事件的行为在浏览器之间有所不同。