Петрушка: класс Handler не выполняется?

Я пытаюсь заставить Петрушку и Bootstrap играть вместе в соответствии с идеями Виктора. Но Parsley отображает его err-msg ниже ввода, а не во всплывающих подсказках, как пытался достичь код Виктора. Поэтому я изменил "classHandler"-fn и добавил console.output, чтобы посмотреть, выполняется ли он вообще - и я не получаю никакого вывода.

HTML:

<form id="regform" class="form-horizontal" method="post">
<div class="form-group"><label class="control-label col-lg-3" for="name_k">Schüler <i class="fa fa-user fa-fw"></i></label>
<div class="col-lg-9"><input id="name_k" name="name_k" placeholder="Vor- und Nachname des Kindes (z.B: &quot;Karl Musterkind&quot;)" type="text" class="form-control col-lg-9" data-parsley-required="true" data-error-message="Bitte geben Sie Vor- und Nachname des Kindes an!" >
</div>
</div>
    <input type="Submit" class="btn btn-primary" value="Absenden">
    </form>

JS:

$(document).ready(function() {
    var parsleyOptions = {
  // Sets success and error class to Bootstrap class names
  successClass: 'has-success',
  errorClass: 'has-error',

  // Bootstrap needs success/error class to be set on parent element
  errors: {
    classHandler: function(el) {
        console.log("Error-handler!");
        // return el.$element.closest(".form-group");
      return el.parent();
    },
    // Set these to empty to make sure the default Parsley elements are not rendered
    errorsWrapper: '',
    errorElem: ''
  },
  listeners: {
    // Show a tooltip when a validation error occurs
    onFieldError: function (elem, constraints, parsleyField) {
      elem.tooltip({
        animation: false,
        container: 'body',
        placement: 'top',
        title: elem.data('error-message')
      });
    },
    // Hide validation tooltip if field is validated
    onFieldSuccess: function(elem, constraints, parsleyField) {
      elem.tooltip('destroy');
    }
  }
};
          $('#regform').parsley(parsleyOptions);
});

Я также собрал скрипку, но, к сожалению, у нее есть проблема с CSRF при публикации, так что я не уверен, поможет ли это вообще.

Поскольку статье Виктора уже 2 года, возможно, она относится к Parsley 1.x? К сожалению, я не "получаю" документ достаточно хорошо, чтобы подтвердить эту идею, все еще упоминаются classHandlers и т. Д., И у меня нет достаточного опыта Parsley, чтобы "увидеть" это...

1 ответ

Решение

В другом описании ссылки введите здесь, я нашел этот код (который я модифицировал для Parsley 2.1):

$.listen('field:error', function (fieldInstance) {

    arrErrorMsg = ParsleyUI.getErrorsMessages(fieldInstance);
    errorMsg = arrErrorMsg.join(';');

    fieldInstance.$element
        .popover('destroy')
        .popover({
            container: 'body',
            placement: 'right',
            content: errorMsg
        })
        .popover('show');

});

$.listen('field:success', function (fieldInstance) {
    fieldInstance.$element.popover('destroy');
});

Но это дает мне предупреждение о том, что публикация публикаций не рекомендуется - я открою новый вопрос для этого.

Другие вопросы по тегам