我創建了一個jQuery函數不顯眼MVC 3驗證...MVC3 - 不顯眼的驗證多個控件
$.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下拉列表中。
的規則是: - 如果一個爲空,則它們必須是空的。我一個,如果填寫,那麼它們必須全部填充。
的日下拉值是使用「值」傳遞給函數。其他值直接從控件中檢索。這一點工作正常。
當我調試,代碼正確,似乎稱之爲「迴歸$ .validator」語句什麼時候我希望它。然而,表單似乎仍然提交給服務器端。唯一的例外是,如果它是我留空的日下拉列表。如果我將「月份」下拉列表留空,則驗證程序無法正常工作。
就是我想要做的實現?把這個驗證器放在5個控件的每一個上看起來似乎有點矯枉過正。
謝謝,讓我走了。由於一些奇怪的原因,我需要引用controlmonth [0]和controlyear [0]等,但我已經得到了它的工作。謝謝。 – 2012-03-15 13:39:07
對,原因是變量是jQuery對象,而不是DOM元素。 jQuery對象包含它的[0]索引器下的實際元素。我在答案中忘記了這一點,對不起。 – tpeczek 2012-03-15 13:53:04