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){}),共有三处需要修改的位置:
showErrors函数中的遍历输入框逻辑showErrorsForInput函数中的遍历错误信息逻辑resetFormGroup函数中的遍历旧错误提示逻辑
步骤2:实现「校验不通过仅标红输入框、不展示错误提示」的需求
找到showErrorsForInput函数,直接删除插入错误提示的代码块即可:
_.each(errors, function(error) { addError(messages, error); });
删除后has-error类仍然会正常添加,Bootstrap默认样式会自动将输入框标红,刚好匹配需求,不需要再做其他修改。如果后续没有其他场景需要插入错误提示,也可以直接删掉addError整个函数。
内容的提问来源于stack exchange,提问作者Reikyal
相关产品推荐
相关产品推荐

