사용자 정의가 눈에 잘 띄지 않는 유효성 검사를 만드는 데 상당히 익숙하며 기묘한 문제가 발생합니다.MVC 사용자 정의 눈에 띄지 않는 유효성 검사 항상 메시지 표시
이 유효성 검사는 기본적으로 Ajax를 통해 데이터베이스를 검사하여 모델과 일련 번호 조합이 이미 존재하는지 확인합니다. jQuery와 Ajax는 예상대로 작동하는 것 같지만 유효성 검사 함수가 호출되는 즉시 유효성 검사 메시지가 나타납니다. 여기
내 jQuery를하다 : 여기$.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="There is already a contract with the provided model and serial numbers."
data-val-length-max="30"
data-val-length="The 30 field requires no more than 30 characters."
data-val="true" class="input-validation-error">
는 검증의 첫 번째 줄 안타 내가 곧 통해 단계의 이미 표시된 메시지 :
제공된 모델 및 일련 번호로 이미 계약을 맺고 있습니다.
또한 함수가 true를 반환하더라도 메시지가 남아 있습니다.
나머지 기능/Ajax는 정상적으로 작동하지만 왜이 메시지가 즉시 표시되는지, 그리고 내가 사실을 반환 할 때 왜 그 메시지가 그대로 남아 있는지 알 수 있습니다.
어떤 일이 벌어지고 있는지 알 수 있습니까?
+1 이것은 올바른 길로 인도했습니다.'success' 응답은 검증 기능에 응답하지 않았기 때문에 기본적으로 무시되었습니다. 그러나 성공 함수입니다. 수정에 대한 내 대답을 참조하십시오. –