Я довольно новичок в создании настраиваемой ненавязчивой проверки и столкнулся со странной проблемой.
Эта проверка в основном просто проверяет базу данных (через 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 работает просто отлично, я простомогу понять, почему он показывает это сообщение немедленно, и почему оно остается там, когда я возвращаю true.
Есть идеи, что происходит?