Запустить проверку happy.js с помощью JavaScript? - PullRequest
2 голосов
/ 15 февраля 2012

Проверка jQuery вроде как раздутая для моей цели, поэтому я нашел Happy.js . К сожалению, проверка запускается только при использовании кнопки «Отправить», которой у меня нет. jQuery-validation предложил функцию "form ()" для программного запуска проверки, поэтому я попытался внедрить эту функцию в Happy.js - безуспешно. Я нашел реализацию «счастливого обратного вызова» ( commit ), но это тоже не работает.

Некоторый код ( обновлен ):

$('#someFormSubmit').click(function() {
  $('#someForm').submit();
});
$('#someForm').submit(function(event) {
  event.preventDefault();
  var jqxhr = $.post('/some', $('#someForm').serialize())
    .success(function(response) {});
});
$("#someForm").isHappy({
  fields: {
    '#name': {
      required: true,
      message: "Hello"
    },
  },
  testMode: true,
  unHappy: function () { alert("hello"); },
});

Нет никакого предупреждения от обратных вызовов, и «happy» всегда верно, когда оно должно быть ложным.

Форма находится в модальной коробке Twitter-bootstrap. Из-за разделения модального тела и модального нижнего колонтитула есть только ссылка .btn для отправки, но не правильный тип ввода = submit.

Какие-нибудь решения?

Ответы [ 5 ]

6 голосов
/ 15 февраля 2012

Попробуйте что-то вроде этого:

// Remember to do all your happy validation stuff first, to ensure that jQuery
// fires off the events in the correct order.
$("#yourForm").isHappy({
  // your validation config
});

$("#yourForm").submit(function (event) {
  // This line prevents the form from actually being submitted
  event.preventDefault();

  // You can then define your actions however you like
  $.post({
    // your config here
  });
});

// When it's time to "submit" the form, it's easy
$("#yourForm").submit();

Я не проверял это с happy.js, но он должен также запустить проверку.

Обновление : Вот мой jsfiddle для этого.Это демонстрирует, что это работает (хотя, если вы проверите скрипту, вы увидите несколько модификаций этого кода).Я не знаю, почему поля не проверяются на размытие, хотя.Это должно работать "из коробки" с happy.js, так что вы можете отправить сообщение автору, если у вас возникла эта проблема.

1 голос
/ 15 февраля 2012

С HappyJS

Happy.js теперь будет проверять отдельные поля событий размытия и все поля при отправке.

Проверка событий размытия недостаточна?

Попробуйте написать свой HTML-код и то, что вы делаете с JS в jsfiddle , вам будет легче получить помощь по нему..

Но, если вы просто хотите активировать проверку при нажатии какой-либо кнопки / элемента, просто установите селектор jQuery на переменную submitButton в параметрах из функции happy

1 голос
/ 15 февраля 2012

Вы пытались использовать опцию submitButton?

Из официальной документации на http://happyjs.com/:

submitButton (string): если вы передадите ему селектор jQuery, форма будет проверена, если щелкнуть по этому элементу вместо подтверждения.

0 голосов
/ 21 февраля 2012
$('#my_form').isHappy({
    when: "blur keyup"
});

Этот синтаксис работает для текущей версии Happy.js.

0 голосов
/ 15 февраля 2012

Happy.js регистрирует обработчик отправки, поэтому, если вам нужно запустить его программно, вы можете просто инициировать отправку с помощью jQuery, нет?

$(form).submit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...