У меня есть собственный метод проверки, который будет проверять введенный почтовый индекс по моей базе данных принятых почтовых индексов. Я хотел бы сделать этот запрос асинхронным. Вот как это выглядит сейчас:
jQuery.validator.addMethod("validZip", function(value, element){
var isValid = false;
$.ajax({
url: '/xpress/wp-admin/admin-ajax.php',
data: {action:"test_checkZip", zip:value},
type:"POST",
async: false,
success: function(result){
if (result == 0){
isValid = false;
} else {
isValid = true;
}
}
});
return isValid;
}, '*');
Этот запрос требует, чтобы он был синхронным, поскольку он обновляет переменную, которая будет возвращена функцией обтекания. Если бы я делал это асинхронно, запрос был бы выполнен неблокирующим образом. Функция будет выполняться, выполнить запрос, однако она будет , а не ждать ответа для обновления логического значения, которое она возвратит. Он вернет ложное значение по умолчанию до завершения работы ajax и обновит его до true.
Мне нужно будет явно уведомить валидатор о том, что событие изменилось, когда ему необходимо повторно проверить элемент управления. Как мне достичь этой идеи уведомления валидатора?
Мне нужно сделать что-то вроде этого:
jQuery.validator.addMethod("validZip", function(value, element){
$.ajax({
url: '/xpress/wp-admin/admin-ajax.php',
data: {action:"test_checkZip", zip:value},
type:"POST",
async: true,
success: function(result){
if (result == 0){
notifyZipControl(false)
} else {
notifyZipControl(true)
}
}
});
}, '*');
function notifyZipControl(isValid){
if (isValid){
// update the validator so the control becomes VALID
} else {
// update the validator so the control becomes INVALID
}
}
Достижима ли эта идея?