【发布时间】:2013-07-21 03:12:03
【问题描述】:
在我的表单中有两个字段,它们相互比较以查看它们是否有效:
<input type="text" name="StartDate" id="StartDate" value="2"
data-val="true" data-val-equalto="xx" data-val-equalto-other="EndDate"/>
<input type="text" name="EndDate" id="EndDate" value="3"
data-val="true" data-val-equalto="xx" data-val-equalto-other="StartDate"/>
当我对StartDate 进行模糊处理时,EndDate 也会得到验证。所以 jQuery 设法避免了两者之间的验证循环。
现在,我正在尝试在我的自定义验证规则中实现相同的机制。我从“其他”字段中获取值,如果一切正常,我也会在“其他”字段中触发验证,但这会以验证循环结束:
$.validator.addMethod("customequal-method", function (val, el, p) {
var $other = $(el).closest('form').find('input[name=' + p.other + ']');
if($other.val() == val){
try{$other.valid();}
finally{return true;}
}
return false;
});
我如何应用与 jQuery 相同的方法?我的意思是,鉴于这两个字段:
<input type="text" name="StartDate2" id="StartDate2" value="2"
data-val="true" data-val-customequal="xx xxx" data-val-customequal-other="EndDate2"/>
<input type="text" name="EndDate2" id="EndDate2" value="3"
data-val="true" data-val-customequal="xx xx" data-val-customequal-other="StartDate2"/>
我希望在修改 EndDate2 时,在模糊之后,StartDate2 也得到验证,并且两者都以与 jQuery 相同的方式变为有效。
我一直在尝试在 jsFiddle 中整理一个示例,但我无法使我的自定义方法工作:http://jsfiddle.net/vtortola/vu6tm/(如果您发现问题,我将非常感激),我在@987654322 开始了一个单独的线程@
干杯。
【问题讨论】:
-
所以在您的视图模型中,您有开始日期和结束日期,使用 Unobtrusive(自定义验证),您想验证开始日期和结束日期。对吗?
-
对。这只是具有两个相互比较的字段的示例。这个想法是,例如,在验证 StartDate2 之后,EndDate2 也会得到验证(因为它依赖于 StartDate2,并且它已经改变了)。干杯。
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 unobtrusive-validation unobtrusive-javascript