Guy*_*y Z 15 c# asp.net-mvc asp.net-mvc-3 remote-validation
我有以下型号:
public class Customer
{
public string FirstName {get;set;}
public string LastName {get; set;}
[Remote("CardExisting", "Validation", AdditionalFields="FirstName,LastName")
public string CardNumber {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
CardExisting操作将检查firstName和LastName的cardNumber组合是否存在现有记录.
如果用户首先输入卡号然后输入他的名字,我无法验证他怎么办?所以当他返回并输入他的名字时我需要再次进行远程验证,如果焦点已经从cardnumber属性丢失了怎么办呢?
Chr*_*ley 22
扩展了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();
});
});
});
}
Run Code Online (Sandbox Code Playgroud)
像这样调用函数:
$(document).ready(function() {
initializeRemotelyValidatingElementsWithAdditionalFields($("#myFormId"));
});
Run Code Online (Sandbox Code Playgroud)
小智 5
我的工作方式是添加一些JavaScript.
$("#FirstName").change(function () {
$('#CardNumber').removeData('previousValue');
$('#CardNumber').valid();
});
Run Code Online (Sandbox Code Playgroud)
因此,当更改名字时,您将清除卡号中的所有先前值并重新验证卡号.