MVC4 シナリオで次の jQuery バリデーターを使用しています。正常に動作しています。ただし、ユーザーがボタンをクリックした場合にのみ検証が必要です。ユーザーがテキストボックスのフォーカスを変更したときではありません。この変更を行うにはどうすればよいでしょうか。
jQuery
$(function ()
{
jQuery.validator.unobtrusive.adapters.add
("lijovalidator", ["param"], function (options)
{
options.rules["lijovalidator"] = options.params.param;
options.messages["lijovalidator"] = options.message;
});
jQuery.validator.addMethod("lijovalidator",
function (value, element, param) {
alert(value);
alert(param);
alert(element);
alert($("#" + param).val());
return false;
});
}(jQuery));
SelectedValueCheckAttribute でのクライアントの検証
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule mcvr = new ModelClientValidationRule();
mcvr.ValidationType = "enteredvaluescheck";
mcvr.ErrorMessage = "Selected Value must be in given range";
mcvr.ValidationParameters.Add("param", OtherProperty);
mcvr.ValidationType = "lijovalidator";
yield return mcvr;
}
モデル
public class CrossFieldValidation
{
public IEnumerable<SelectListItem> Items { get; set; }
[SelctedValueCheckAttribute("TxtCrossField") ]
public string SelectedValue { get; set; }
[Required]
[Display(Name = "Quantity:")]
public string TxtCrossField{ get; set; }
public IEnumerable<SelectListItem> ShippingItems { get; set; }
[SelctedValueCheckAttribute("ShippingValue")]
public string SelectedShippingItemValue { get; set; }
[Display(Name = "Quantity:")]
[Required]
public string ShippingValue { get; set; }
}