jQuery Validation 多必填字段场景下如何仅校验指定2个字段
解决方案
你可以通过临时调整校验配置或批量执行校验的方式实现同时校验指定字段的需求,有两种常用可行方案:
方案1:动态设置ignore参数批量过滤非目标字段
不需要修改原有全局校验规则,仅在当前场景临时忽略不需要校验的字段,调用后会一次性触发所有目标字段的校验、同时展示所有错误提示:
const validateRes = $('#form').validate({ // 仅保留first_name、last_name参与校验,其他字段全部临时忽略 ignore: ':not(#first_name, #last_name)' }).form(); // 两个字段都通过校验才会返回true if (validateRes) { // 校验通过后的业务逻辑 }
说明:ignore是jQuery Validation插件内置的配置参数,接收选择器匹配需要跳过校验的元素,这里用:not()反选即可锁定仅需要校验的两个字段,调用form()方法会一次性校验所有未被忽略的字段
方案2:批量调用element()方法避免校验中断
如果你不想修改校验实例的全局配置,可以遍历目标字段批量执行校验,不会因为单个字段校验失败中断后续校验流程,所有目标字段的错误提示会同时展示:
// 定义需要校验的目标字段列表 const targetFields = ['#first_name', '#last_name']; const validator = $('#form').validator(); let isAllPass = true; // 遍历执行校验,全程不会中途中断 targetFields.forEach(selector => { const fieldPass = validator.element(selector); if (!fieldPass) isAllPass = false; }); if (isAllPass) { // 校验通过后的业务逻辑 }
说明:该方案解决了你提到的&&写法的问题,&&逻辑符会在第一个字段校验失败后直接中断后续代码执行,不会触发第二个字段的校验,用遍历写法可以保证所有目标字段都完成校验
内容的提问来源于stack exchange,提问作者NoMan Ilyas
相关产品推荐
相关产品推荐

