JavaScript预测输入/下拉列表

JavaScript预测输入/下拉列表,javascript,Javascript,我有一个文本输入,有人可以开始输入,然后在下面的列表中将根据您输入的内容进行填充 1) 目前,我正在使用此选项检查“包含”: if(listToRedo[i].value.indexOf(text) != -1){ 但问题是,它似乎是区分大小写的,我如何才能更改它 2) onkeyevent、onkeypress、onkeydown是否接受删除键操作?另外,在本活动中最好使用哪一个 if(listToRedo[i].value.toLowerCase().indexOf(text.toLowe

我有一个文本输入,有人可以开始输入,然后在下面的列表中将根据您输入的内容进行填充

1) 目前,我正在使用此选项检查“包含”:

if(listToRedo[i].value.indexOf(text) != -1){
但问题是,它似乎是区分大小写的,我如何才能更改它

2) onkeyevent、onkeypress、onkeydown是否接受删除键操作?另外,在本活动中最好使用哪一个

if(listToRedo[i].value.toLowerCase().indexOf(text.toLowerCase()) != -1){
如果我理解正确,上述内容应该适用于您的案例

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

  • onkeydown
    onkeydup
    会为每个键调用,甚至是光标键、shift键等

  • 1) …但问题是它似乎区分大小写,我如何才能更改它

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

    if (listToRedo[i].value.toLowerCase().indexOf(text.toLowerCase()) != -1) {
    
    或者使用带有不区分大小写修饰符的正则表达式(
    i
    ):

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

    2) onkeyevent、onkeypress、onkeydown是否接受删除键操作?另外,在本活动中最好使用哪一个

    if(listToRedo[i].value.toLowerCase().indexOf(text.toLowerCase()) != -1){
    
    onkeydown和onkeyup将为删除键触发。onkeypress不会为至少Chrome和IE中的delete键触发,它将仅为以下键触发:

    • 字母:A-Z(大写和小写)
    • 数字:0-9
    • 符号:!@$%^&*( ) _ - + = < [ ] { } , . / ? \ | ' ` "~
    • 系统:ESC、空格键、ENTER
    最好结合使用onkeypress和onkeydown,并检查输入值的变化,因为这些事件的行为在不同浏览器中有所不同。

    onkeypress并不是针对所有浏览器中的每个键都被调用。