You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:25:18