Проблема, с которой вы сталкиваетесь, заключается в том, что (1) вызов AJAX является асинхронным, поэтому метод возвращается до завершения вызова AJAX и (2) операторы return в обработчике обратного вызова возвращаются из обработчика не функция проверки. Самый простой способ исправить это - использовать удаленный метод проверки. Если вы хотите сделать это самостоятельно, вам нужно, чтобы вызов AJAX был синхронным (async: false
) и захватывал результат в переменную, которая возвращается из функции.
$.validator.addMethod("check_exists", function(value) {
var status;
$.ajax({
type: "POST",
async: false,
url: "xyz.com/check_exists.php",
data: $( "#frmEdit" ).serialize(),
success: function(result){
status = result=="exists";
},
});
return status;
}, 'This record is already exists');