alexfedoseev
@alexfedoseev
React & Rails Dev

Как вернуть value из асинхронного ajax запроса для required-метода jQuery Validation plugin?

Я использую jQuery Validation plugin (JVP) для валидаций форм через ajax-запросы к серверу. Всё работает отлично кроме одного: JVP не валидирует удалённо пустые поля.

Я не против использовать дефолтное правило плагина required без запросов к серверу, но хотелось бы возможность такой валидации всё-таки реализовать. Да и задачку хочется решить)

Итак, проблема: JVP не валидирует пустые поля через его встроенный метод remote. Но я могу использовать функции в его required методе:
required: function(element) {
  return true_or_false;
}

Я решил пульнуть асинхронный ajax-запрос внутри этой функции, но у меня не выходить отдать ей value, получаемое от сервера. Вот код (CoffeeScript):
validate_url = '/emails/validate'

required_validate = (e, callback) ->
  data = {}
  data[e.name] = $(e).val()
  $.ajax(
    url: validate_url
    type: 'post'
    dataType: 'json'
    data: data
    success: (response) ->
      callback(response)
  )

$('#my_form').validate(
  rules:
    'email[email]':
      required: (element) ->
        required_validate(element, (response) ->
          if response == true || response == "true"
            false
          else
            true
        )
)

Я проверил данные, которые уходят на сервер, и его ответ — с ними всё ок. Проблема в том, что метод required JVP не ждёт ответа от сервера и получает true раньше.

Как мне вернуть ему этот ответ?
  • Вопрос задан
  • 3173 просмотра
Пригласить эксперта
Ответы на вопрос 2
@himik
попробуйте
async: false
для запроса сделать
Ответ написан
@mayorovp
Ответ: никак. К моменту окончания запроса функция required уже давным-давно завершила свое выполнение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы