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

CodeIgniter使用validate.js提交表单报_ is not defined错误如何解决

问题原因与解决方案

报错根因

控制台触发的是_ is not defined错误,原因是代码中多处使用了_.each()方法,该方法属于Underscore.js或Lodash.js工具库,当前项目未引入该依赖,调用时就会触发未定义报错。

修复步骤

步骤1:解决_未定义报错

可二选一处理:

  • 方案A:引入依赖库,在validate.js的引入代码上方新增Underscore.js引入代码:
<script src="https://cdn.jsdelivr.net/npm/underscore@1.13.6/underscore-min.js"></script>
  • 方案B:替换所有_.each为原生JS遍历方法,无需额外引入库:
    将所有_.each(arr, function(item){})替换为Array.from(arr).forEach(function(item){}),共有三处需要修改的位置:
  1. showErrors函数中的遍历输入框逻辑
  2. showErrorsForInput函数中的遍历错误信息逻辑
  3. resetFormGroup函数中的遍历旧错误提示逻辑

步骤2:实现「校验不通过仅标红输入框、不展示错误提示」的需求

找到showErrorsForInput函数,直接删除插入错误提示的代码块即可:

_.each(errors, function(error) {
  addError(messages, error);
});

删除后has-error类仍然会正常添加,Bootstrap默认样式会自动将输入框标红,刚好匹配需求,不需要再做其他修改。如果后续没有其他场景需要插入错误提示,也可以直接删掉addError整个函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:36:03