我在创造不侵犯习俗的验证方面说得相当新鲜,而且正在陷入一个棘手的问题。
这一验证基本上只是对数据库(通过Ajax)进行核对,以了解模型和序列号组合是否已经存在。 j和Ajax似乎正在按预期行事,但我发出的验证信息一经要求就显现出来。
这里是我的 j:
$.validator.addMethod( newserialandmodel ,
function (value, element, parameters) {
var modelNumber = $( #ProductInformation_ModelNumber ).val();
var serialNumber = value;
var token = $( input[name=__RequestVerificationToken] ).val();
$.ajax({
type: "POST",
url: "/ajax/getmodelandserialexists/",
data: ({
modelNumber: modelNumber,
serialNumber: serialNumber,
__RequestVerificationToken : token
}),
cache: true,
dataType: json ,
success: function (response) {
if (response.exists) {
$.validator.messages.newserialandmodel =
$.format($.validator.messages.newserialandmodel);
}
return !response.exists;
}
});
return false;
}
);
$.validator.unobtrusive.adapters.add(
newserialandmodel ,
function (options) {
options.rules[ newserialandmodel ] = options.params;
if (options.message != null) {
$.validator.messages.newserialandmodel = options.message;
}
}
);
形式要素如下:
<input type="text" value=""
name="ProductInformation.SerialNumber" id="ProductInformation_SerialNumber"
data-val-required="The Serial number field is required."
data-val-newserialandmodel="已订有提供模型和序列号的合同。"
data-val-length-max="30"
data-val-length="The 30 field requires no more than 30 characters."
data-val="true" class="input-validation-error">
当我走过一步时,一旦打上了第一个验证线,信息就已经显示:
已订有提供模型和序列号的合同。
Also, even though the function returns true, it the message remains.
其余职能/Ajax的工作只是罚款,我可以指出,它为什么要立即展示这一信息,为什么在我回去的时候,它会留在那里。
有什么想法?