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

Bootstrap is-invalid/is-valid与Ajax在CodeIgniter中异常问题

解决CodeIgniter+Ajax表单中仅移除指定输入框的is-invalid类问题

看起来你现在的核心问题是代码在遍历所有表单字段的key,导致每一个匹配到的输入框都被移除了is-invalid类,而非仅针对你需要的那个指定输入框(比如用户代理的用户名输入框)。下面给你两种针对性的解决方案:

方案一:直接指定目标输入框操作

如果已经明确知道要处理的输入框对应的key(比如用户名输入框的key是username),直接针对这个key执行移除操作即可,不需要遍历所有字段:

// 替换成你需要处理的目标字段key
const targetFieldKey = 'username';
const $targetInput = $('#input-' + targetFieldKey);

// 确认输入框存在后移除错误类
if ($targetInput.length) {
  $targetInput.removeClass('is-invalid');
}

注:你之前代码里的$('#input-' + key).val($('#input-' + key).val());完全是多余的,它只是把输入框的值重新赋值给自己,没有任何实际作用,直接删掉就好。

方案二:结合后端错误列表精准控制样式

如果后端返回了包含错误字段的数组(比如接口返回的response.errors),可以采用「先清除所有错误样式,再给错误字段添加样式」的逻辑,这样能确保只有真正有错误的字段才会显示红色状态:

// 第一步:移除所有输入框的错误样式
$('form .form-control').removeClass('is-invalid');

// 第二步:遍历后端返回的错误列表,给对应字段添加错误样式
$.each(response.errors, function(key, errorMsg) {
  const $errorInput = $('#input-' + key);
  if ($errorInput.length) {
    $errorInput.addClass('is-invalid');
    // 可选:在这里添加错误提示文本,比如插入到输入框下方
    // $errorInput.siblings('.invalid-feedback').text(errorMsg);
  }
});

这种方式逻辑更清晰,既能解决你遇到的用户名输入框误变绿色的问题,也能保证所有验证通过的字段自动移除错误样式。

内容的提问来源于stack exchange,提问作者user4419336

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:21:43