Форма Parsley всегда не проходит проверку при первой отправке

#jquery #forms #validation #parsley.js

#jquery #формы #проверка #parsley.js

Вопрос:

У меня есть форма, которую я пытаюсь проверить с помощью Parsley следующим образом:

 $('form#captainRegistrationForm').on('submit', function() {
  var $this;
  $this = $(this);
  if ($this.parsley('validate')) {
    console.log('yes');
  } else {
    console.log('no');
  }
  return false;
});
  

Неожиданное поведение:

При первой отправке консоль всегда возвращает no (независимо от того, действительна форма или нет). При второй отправке она возвращается yes (если форма действительна).

После второй отправки я намеренно делаю форму неправильной, но при третьей отправке консоль возвращается yes . Только после того, как я снова нажму отправить, она возвращается no .

Есть ли какой-либо надежный способ проверки формы с помощью Parsley? Я использую Parsley версии 2.0.2

Ответ №1:

Это своего рода поздняя отсрочка.

Однако вы не привязываете parsley к форме перед отправкой. Вы должны сделать что-то вроде этого:

 // bind parsley to form
$('form#captainRegistrationForm').parsley();

// on form submit, validate the form
$('form#captainRegistrationForm').on('submit', function(e) {
    var $this;
    $this = $(this);
    if ($this.parsley('validate')) {
        console.log('yes');
    } else {
        console.log('no');
    }

    e.preventDefault();
    return false;
});
  

Предполагая, что форма существует, у вас не должно возникнуть проблем с этим.

Комментарии:

1. Довольно поздно, что я не сказал, что это уже решено, я решаю свою проблему if ($this.parsley().validate()) (это даже работает, когда я делаю это при отправке, но мне нужно вводить data-parsley-validate html)