我有以下模型:
public class Customer
{
public string FirstName {get;set;}
public string LastName {get; set;}
[Remote("CardExisting", "Validation", AdditionalFields="FirstName,LastName")
public string CardNumber {get; set;}
}
CardExisting 操作将检查是否存在针对名字和姓氏的卡编号组合的现有记录。
如果用户首先输入卡号,然后输入他的姓名,我无法验证他,所以当他返回并输入他的姓名时,我需要再次远程验证,当焦点已经从卡号属性中丢失时,我该怎么做?
扩展 Jaluka 的答案,我编写了这个辅助方法,该方法查找每个具有“附加字段”的远程验证元素,然后在每次这些字段之一发生更改时触发对所述元素的验证。
// I hate naming things
function initializeRemotelyValidatingElementsWithAdditionalFields($form) {
var remotelyValidatingElements = $form.find("[data-val-remote]");
$.each(remotelyValidatingElements, function (i, element) {
var $element = $(element);
var additionalFields = $element.attr("data-val-remote-additionalfields");
if (additionalFields.length == 0) return;
var rawFieldNames = additionalFields.split(",");
var fieldNames = $.map(rawFieldNames, function (fieldName) { return fieldName.replace("*.", ""); });
$.each(fieldNames, function (i, fieldName) {
$form.find("#" + fieldName).change(function () {
// force re-validation to occur
$element.removeData("previousValue");
$element.valid();
});
});
});
}
像这样调用该函数:
$(document).ready(function() {
initializeRemotelyValidatingElementsWithAdditionalFields($("#myFormId"));
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)