我有一个文本输入,有人可以开始输入,然后列表下方将根据与您的输入相匹配的内容进行填充。
1) 目前我正在使用它来检查“包含”:
if(listToRedo[i].value.indexOf(text) != -1){
但问题是它似乎区分大小写,我该如何更改它?
2) onkeyevent、onkeypress、onkeydown 是否接受删除键操作?还有哪个最适合用于此事件。
最佳答案
1) ...but the problem is that it appears to be case sensitive, how can i change this?
您有两个选择。第一种是将两个字符串都转换为小写,如下所示:
if (listToRedo[i].value.toLowerCase().indexOf(text.toLowerCase()) != -1) {
或使用带有不区分大小写修饰符 (i
) 的正则表达式:
var reg = new RegExp(text, "i");
if (listToRedo[i].value.search(reg) != -1) {
但是,如果您的测试字符串包含在正则表达式中具有特殊功能的字符并且您需要事先对这些字符进行转义,则第二种方法可能会引入问题。第一种方法更适合基本搜索。
2) Do onkeyevent, onkeypress, onkeydown accept the delete key action? Also which one is best to use for this activity.
onkeydown 和 onkeyup 将触发删除键。 onkeypress 至少在 Chrome 和 IE 中不会为删除键触发,它只会为以下键触发:
- 字母:A - Z(大写和小写)
- 数字:0 - 9
- 符号:! @#$%^&*()_-+=<[]{},./?\| '`“~
- 系统:ESC、空格键、ENTER
最好结合使用 onkeypress 和 onkeydown 并检查输入值的变化,因为这些事件的行为因浏览器而异。
关于JavaScript 预测输入/下拉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3502345/