IE8/IE11中替代JavaScript includes()检测输入框"+"符号的方案
问题解决:IE8/11下检测输入框中的"+"符号
你的代码存在两个核心问题导致检测失效,不止是includes()的兼容问题,下面给出修复方案:
关键问题分析
- 元素获取错误:
document.getElementsByClassName("recycle")返回的是元素集合,不是单个输入框,直接绑定事件或读取.value都会失效,必须通过索引[0]获取具体元素。 includes()兼容问题:IE8/11不支持字符串的includes()方法,需用兼容方法替代。
兼容修复方案
最直接的替代是使用indexOf(),该方法在所有IE版本中都支持,当返回值不等于-1时,即表示目标字符存在。同时修正元素获取逻辑,推荐使用ID获取(输入框有唯一ID txtEXT_AK,更可靠):
修正后的代码
<input type="text" class="recycle" name="txtEXT_AK" id="txtEXT_AK" size="10" onclick="this.select()"> <script> // 通过ID获取唯一输入框元素 var inputBox = document.getElementById("txtEXT_AK"); // 绑定键盘抬起事件 inputBox.onkeyup = checker; function checker(){ var textValue = inputBox.value; var targetChar = "+"; // 用indexOf替代includes,完全兼容IE8/11 if (textValue.indexOf(targetChar) !== -1) { alert('found'); } } </script>
补充说明
- 你之前尝试的
contains()是DOM节点的方法,用于判断节点包含关系,不是字符串方法,所以无效。 - 如果想用正则
match(),需转义特殊字符+(它是正则元字符),写法为textValue.match(/\+/),但indexOf()是更高效的字符串存在性检测方案。
内容的提问来源于stack exchange,提问作者Naz Azhar
相关产品推荐
相关产品推荐

