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

在React中使用jQuery实现输入框校验失败时边框永久显色如何实现

问题原因

你当前的CSS规则input[type=text].redBorder:focus只在输入框处于聚焦状态时才会生效,非聚焦状态下不会匹配到该样式规则,所以只有聚焦时才会显示红色边框。

修复方案

1. 调整CSS规则

移除:focus伪类限制,同时补充校验通过的绿色边框样式,还可以根据需要取消输入框默认的聚焦outline高亮,避免和自定义边框冲突:

/* 校验失败永久显示红色边框,聚焦时也保持 */
input[type=text].redBorder {
    border: 3px solid red;
}
/* 校验成功永久显示绿色边框,聚焦时也保持 */
input[type=text].greenBorder {
    border: 3px solid green;
}
/* 可选:取消输入框默认的聚焦高亮外框 */
input[type=text].inputInfo:focus {
    outline: none;
}

2. 修正JSX代码中的逻辑错误

你当前的className判断逻辑、input属性都有问题,需要调整:

  • 原判断this.state.value1 != this.state.value1.match(/xxx/)逻辑错误:match方法返回的是匹配结果数组或null,不能直接和输入值做不等判断,应该直接判断匹配结果是否为null
  • input的受控属性写错了,React受控输入框要用value属性,不是value1

修正后的输入框代码:

<input 
  className={!this.state.value1.match(/^[a-zA-ZĞÜŞİÖÇğüşiöç]+$/) ? "redBorder inputInfo" : "greenBorder inputInfo"} 
  name="value1"  
  type="text"  
  placeholder="Name" 
  value={this.state.value1} 
  onChange={this.handleChange} 
/>

额外说明

这个场景完全不需要引入jQuery实现,依靠React原生的状态驱动样式就可以满足需求,还能避免额外的依赖引入和DOM操作冲突。

内容的提问来源于stack exchange,提问作者Oğuzhan Memiş

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:12:03