Проверка триггера петрушки без формы отправки?

17

Учитывая этот код, он никогда не работает и всегда возвращает true?

<form id="my-form" data-validate="parsley">
  <p>
    <label for="username">Username * :</label>
    <input type="text" id="username" name="username" data-required="true" >
  </p>

  <p>
    <label for="email">Email Address * :</label>
    <input type="text" id="email" name="email" data-required="true" >
  </p>

  <br/>

  <!-- Validate all the form fields by clicking this button -->
  <a class="btn btn-danger" id="validate" >Validate All</a>
</form>

<script>
var $form = $('#my-form');
$('#validate').click (function () {
    if ( $form.parsley('validate') )
      console.log ( 'valid' ); <-- always goes here
    else
      console.log ('invalid');
});

</script>

Итак, мой вопрос в том, есть ли способ инициировать проверку парселя без добавления кнопки отправки?

    
задан Hoan Dang 01.04.2014 в 11:15
источник

2 ответа

37

$form.parsley('validate') - это API 1.x. Это было устарело в версиях 2.x, которые вы могли бы использовать.

Попробуйте вместо $form.parsley().validate() .

Лучшие

    
ответ дан guillaumepotier 01.04.2014 в 15:06
источник
3

Я искал высоко и низко, чтобы попытаться выполнить работу по проверке формы с тегом non-form. Я предполагаю, что моя самая большая проблема с каркасом заключается в том, что он не работает из коробки с элементами неформы. Я был бы в порядке, используя элемент формы, если бы он не прокручивался до верхней части страницы каждый раз, когда он пытается проверить. Поскольку это поведение присуще тому, как работает форма, есть только этот хак, чтобы исправить его.

Так же, как и побочная заметка, также используется атрибут data-parsley-validate для тега div. Вы также можете инициализировать форму как обычно (это означает, что вы можете подписаться на проверку).

Пример html:

<div id="signupForm" data-parsley-validate>
    ... put form inputs here ...
    <button id="signupBtn">Sign me up</button>
</div>

Просто включите js в:

var $selector = $('#signupForm'),
    form = $selector.parsley();

form.subscribe('parsley:form:success', function (e) {
    ...
});

$selector.find('button').click(function () {
    form.validate();
});
    
ответ дан Justin Muller 10.02.2015 в 11:24
источник