表单提交触发ReferenceError: formValidation is not defined错误如何解决
表单提交校验函数未定义问题解决步骤
- 首先删除HTML文档最开头DOCTYPE之前的4行多余script引入代码,HTML规范要求DOCTYPE必须是文档第一行,前面的内容会导致解析异常,影响JS加载执行,你head标签内已经引入过对应资源,这部分是冗余无效内容。
- 验证
../assets/js/registrationValidation.js文件的加载状态:打开浏览器开发者工具(F12),切换到「网络」面板,刷新页面,查看该JS文件是否返回404,如果是404则调整引入路径为正确的相对/绝对路径。 - 检查函数作用域:如果你的
registrationValidation.js内的代码被包裹在$(function(){})、document.addEventListener('DOMContentLoaded', function(){})这类回调函数中,formValidation会成为局部函数,内联onsubmit事件只能调用全局作用域下的函数。修复方法:要么把formValidation的定义移到所有函数外层,要么手动挂载到全局对象,在JS文件末尾添加代码:window.formValidation = formValidation。 - 修复JS代码内的逻辑错误:
- 表单的name属性为
registratieForm,需要把JS里的document.registration.xxx全部替换为document.registratieForm.xxx,否则函数调用后会抛出找不到元素的错误 - 你调用
email_validation时传了3个参数,但函数定义只接收1个参数,需要把if (email_validation(email, 5, 12))改为if (email_validation(email))
- 表单的name属性为
内容的提问来源于stack exchange,提问作者Amin LQ
相关产品推荐
相关产品推荐

