我正在使用jquery validate插件验证我的表单上的所有字段,没有问题。jquery验证插件 - 使用单独表中的值验证表单
但是,我需要验证窗体标记外的html表中的行数。
下面是有问题的元件:
- 形式:ID = “roadForm”
- 选择输入:ID = “editRoad_ProjectClassification”
- 表:ID = “dataExistingSegments”
我的商业规则是这样的:
- 如果“editRoad_ProjectClassification”选择的值等于“NO TREATMENTS”,则表“dataExistingSegments”中的行数必须等于零。
- 如果“editRoad_ProjectClassification”选择的值不等于“NO TREATMENTS”,那么表“dataExistingSegments”中的行数必须大于零。
我已经创建了两个自定义规则的验证如下:
要验证有表中没有行如果“editRoad_ProjectClassification”等于“无治”。
g$.validator.addMethod("roadWithNoTreatmentsHasNoSegments", function (value, element, params) { var pc = g$('#editRoad_ProjectClassification').val(); var segmentCount = g$('#dataExistingSegments tbody tr').length; if (pc == 'NO TREATMENTS' && segmentCount > 0) { return this.optional(element) || false; } else { return this.optional(element) || true; } }, g$.format("Must have no segments if Project Classification is 'NO TREATMENTS'") );
要验证有在表中的至少一行,如果“editRoad_ProjectClassification”不等于“否治”
g$.validator.addMethod("roadWithTreatmentsHasAtLeastOneSegment", function (value, element, params) { var pc = g$('#editRoad_ProjectClassification').val(); var segmentCount = g$('#dataExistingSegments tbody tr').length; if (pc != 'NO TREATMENTS' && pc != '' && segmentCount == 0) { return this.optional(element) || false; } else { return this.optional(element) || true; } }, g$.format("Must have at least one segment if Project Classification is not 'NO TREATMENTS'") );
然后验证形式,我有以下:
g$("#roadForm").validate({ errorElement: "span", rules: { editRoad_Jurisdiction: "required", editRoad_TreatmentDate: { "required": true, date: true, roadDateIsValidForMultiYearPlan: true }, editRoad_ProjectClassification: "required", editRoad_ImprovementType: "required", editRoad_SurfaceType: "required", editRoad_MultiYear: "required", editRoad_LifeExpectancy: { "required": true, digits: true }, editRoad_MDOTJobID: { digits: true }, editRoad_ProjectID: { maxlength: 50 }, dataExistingSegments: { "required": true, roadWithTreatmentsHasAtLeastOneSegment: true, roadWithNoTreatmentsHasNoSegments: true } }, messages: { editRoad_Jurisdiction: "Please select an option", editRoad_TreatmentDate: { required: "Please select an date", date: "Please enter a properly formatted date" }, editRoad_ProjectClassification: "Please select an option", editRoad_ImprovementType: "Please select an option", editRoad_SurfaceType: "Please select an option", editRoad_MultiYear: "Please select an option", editRoad_LifeExpectancy: { required: "Please enter a value", digits: "Must be a valid number" }, editRoad_MDOTJobID: { digits: "Must be a valid number" }, editRoad_ProjectID: { maxlength: "Cannot be more than 50 characters long" } } });
这不是工作,我认为这是因为“数据ExistingSegments“表格不在表格内。但由于标记和CSS的完成方式,我不能将此表放置在表单中。我怎样才能使这个工作?