使用jQuery Validate验证Selectpicker下拉组合时触发require_from_group错误
解决jQuery Validate中
require_from_group方法的异常问题 你遇到的Exception occurred when checking element hour, check the 'require_from_group' method错误,核心原因是**require_from_group并不是jQuery Validate核心库自带的验证方法**,它属于官方提供的附加方法,需要额外引入对应的文件才能使用。下面是完整的解决方案:
1. 引入必要的附加方法文件
确保在引入jQuery Validate核心库之后,再引入additional-methods.js文件,这是解决方法不存在异常的关键:
<!-- jQuery核心库 --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <!-- jQuery Validate核心库 --> <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script> <!-- 附加方法库(包含require_from_group) --> <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/additional-methods.min.js"></script> <!-- Bootstrap Select组件 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.18/js/bootstrap-select.min.js"></script>
2. 修正验证配置中的细节问题
除了引入文件,你的验证规则还有几处小问题需要调整,才能让组验证正常工作:
- 组字段名不匹配:
groups配置里写的是hours minutes,但你的表单元素name是hour(不是hours),需要统一成hour minutes,否则组验证无法正确关联字段。 - 缺少描述字段的验证规则:你在
messages里定义了hours_descr的提示,但rules里没有给它加required规则,需要补上才能触发对应提示。 - 统一组验证的提示信息:因为是组验证,
hour和minutes可以用相同的提示,避免重复弹出多条提示。
修正后的验证脚本:
var timesRegister = $('#registerTime').validate({ ignore: '', // 正确配置:selectpicker会隐藏原select,需要关闭忽略隐藏元素的默认行为 debug: true, groups: { timeGroup: "hour minutes" // 修正字段名,和表单name属性保持一致 }, rules: { project_id: { required: true }, datum: { required: true }, hour: { require_from_group: [1, ".time-group"] }, minutes: { require_from_group: [1, ".time-group"] }, hours_descr: { required: true } // 补上描述字段的必填规则 }, messages: { project_id: "Please Select the working on Project!", datum: "Please enter working date!", hour: "Please select the working hour or minutes!", // 统一组验证提示 minutes: "Please select the working hour or minutes!", hours_descr: "Please describe short the task!", }, submitHandler: function (form) { $.ajax({ type: 'POST', url: $(form).attr('action'), data: $(form).serialize(), success: function () { // 可添加成功后逻辑:比如关闭模态框、提示成功信息 }, error: function (r) { // 处理请求错误:比如显示错误提示 $('#time-error').text(r.responseText).removeClass('hidden'); } }); } });
3. 修正表单HTML的细节
你的下拉框默认选项(0)没有设置value属性,这会导致选中该选项时,jQuery Validate会将其判定为空值,影响组验证逻辑,需要给默认选项加上value:
<!-- 小时下拉框修正 --> <select class="selectpicker time-group form-control" id="hour" name="hour"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <!-- 其他选项保持不变 --> </select> <!-- 分钟下拉框修正 --> <select class="selectpicker time-group form-control" id="minutes" name="minutes"> <option value="0">0</option> <option value="5">5</option> <option value="10">10</option> <!-- 其他选项保持不变 --> </select>
做完以上修改后,require_from_group的异常就会消失,组验证也能正常工作:当hour和minutes至少有一个选中有效值时,验证通过。
内容的提问来源于stack exchange,提问作者fefe
相关产品推荐
相关产品推荐

