【发布时间】:2012-03-15 12:37:32
【问题描述】:
我为不显眼的 MVC 3 验证创建了一个 jQuery 函数...
$.validator.addMethod('dtdt',
function (value, element, parameters) {
var idmonth = '#' + parameters['m'];
var idyear = '#' + parameters['y'];
var idhour = '#' + parameters['h'];
var idminute = '#' + parameters['mn'];
var controlmonth = $(idmonth);
var controlyear = $(idyear);
var controlhour = $(idhour);
var controlminute = $(idminute);
var mv = controlmonth.val();
var yv = controlyear.val();
var hv = controlhour.val();
var mnv = controlminute.val();
if (value == "" || mv == "" || yv == "" || hv == "" || mnv == "")
if (value != "" || mv != "" || yv != "" || hv != "" || mnv != "")
return $.validator.methods.required.call(
this, value, element, parameters);
return true;
}
);
这背后的想法是我有 5 个彼此相邻的下拉控件(日、月、年、小时和分钟)。我已将此验证器放在 Day 下拉列表中。
规则是:- 如果一个是空的,那么它们都必须是空的。我一个如果填写,那么他们必须都填写。
Day 下拉列表值使用“value”传递到函数中。其他值直接从控件中检索。这一点工作正常。
当我调试时,代码似乎在我期望的时候正确地调用了“return $.validator”语句。然而,表单似乎仍然提交到服务器端。唯一的例外是如果它是我留空的日期下拉菜单。如果我将“月份”下拉列表留空,则验证器无法正常工作。
我想做的事可以实现吗?将此验证器放在 5 个控件中的每一个上似乎有点过头了。
【问题讨论】:
标签: jquery asp.net-mvc-3 unobtrusive-validation