input validation不生效 表单无论如何都会提交如何解决?
问题原因及修复方案
1. 移除重复加载的jQuery
当前页面先后加载了两个版本的jQuery,会导致jquery-validate插件绑定异常,删除多余的jQuery引用即可:
<!-- 删掉这行重复的低版本jQuery --> <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
保留唯一的jQuery引用即可,建议使用普通版不要用slim版,避免缺少部分API导致插件报错。
2. 修正validate初始化语法
当前的validate调用语法错误,debug:true没有放在参数对象内部,同时没有指定校验规则,也没有给表单元素加必填标识,按如下方式修改:
方案一:给input标签加原生required属性,配合默认校验规则:
<!-- 给所有必填的input加上required属性,邮箱校验加equalTo规则 --> <input type="text" name="first_name" id="first_name" required> <input type="text" name="last_name" id="last_name" required> <input type="email" name="email" id="email" required> <input type="email" name="verify" id="verify" required equalTo="#email">
然后修正validate初始化代码:
<script> $(document).ready(function(){ $("#contact_form").validate({ debug: false, // 调试阶段可以设为true阻止表单提交,上线改为false messages: { verify: { equalTo: "两次输入的邮箱地址不一致" } } }); }); </script>
3. 额外优化建议
- 校验规则如果不想写在标签里,也可以全部放在validate的rules参数中,和页面结构解耦
- 上线前一定要保留后端PHP的二次校验,前端校验只能防正常用户的误操作,不能防恶意提交
内容的提问来源于stack exchange,提问作者iglified
相关产品推荐
相关产品推荐

