Основание 6: постоянный слушатель событий не работает

Я использую Foundation 6 и пытаюсь получить форму ajax для работы с проверкой формы Abide.

Я адаптировал пример из документации. Сама валидация работает правильно, но не заставляет слушателей событий работать.

Вот мой код формы:

<form data-abide novalidate class="app-formular" name="kontakt">
<label>Nachname*
    <input type="text" placeholder="" name="nachname" required pattern="^.{2,100}$" />
    <span class="form-error">Bitte ausfüllen (min. 2, max. 100 Zeichen).</span>
</label>

<fieldset>
    <button class="button expanded" type="submit">Senden</button>
</fieldset>
</form>

Проверка правильности формы для обязательных полей работает довольно хорошо. Таким образом, я предполагаю, что структура Foundation правильно инициализирована.

В JS я проверяю форму в каждом цикле (может быть несколько форм на странице) и пытаюсь прослушать 3 события:

(1) formvalid.zf.abide

(2) forminvalid.zf.abide

(3) отправить

$( document ).ready(function() {
$('.app-formular').each(function( index ) {
    var random = Math.random();

    var form_name = $( this ).attr('name');
    console.log("Form >> "+ form_name +" << is there");

    // on.formvalid not working
    $( this ).on("formvalid.zf.abide", function(ev,frm) {
        console.log("(1) Form >> "+ form_name +" << is valid");

        var form_name = $( this ).attr('name');
        var form_data = $( this );

        if(typeof form_name !== "undefined" ) 
        {
            var fURL = '/_assets/js/aj_formular.asp?f=' + form_name + '&r=' + random;
            // Ajax-Objekt laden
            $.ajax ({
                data: form_data.serialize(),
                type: 'post',
                url: fURL,
                encoding:"UTF-8",
                dataType: 'html',
                success: function(result){
                    $(this).hide().html(result).fadeIn('fast');
                }
            });
        } else {
            var result ='<div class=""callout alert"">Fehler beim Formularversand.</div>'
            $(this).hide().html(result).fadeIn('fast');
        }
    });

    // on.forminvalid not working
    $( this ).on("forminvalid.zf.abide", function(ev,frm) {
        console.log("(2) Form >> "+ form_name +" << is invalid");
    });

    // works!!!
    $( this ).on("submit", function(ev) {
        ev.preventDefault();
        console.log("(3) Submit for form >> "+ form_name +" << intercepted");
    });
});
});

В console.log выскакивает только третье событие, остальные - нет, и я не могу понять, что я делаю неправильно.

Заранее спасибо за помощь.

0 ответов

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