JQuery Form Validation отлично работает в Chrome, Firefox и Edge, но не работает в Internet Explorer 11 - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь проверить форму с помощью плагина "jquery-validation": "^ 1.18.0".Этот код отлично работает в Chrome, Firefox и Edge.Но в Internet Explorer 11 этот плагин показывает недопустимое сообщение формы, даже если все поля имеют действительные данные.В консоли нет ошибок.

Я использую Handlbar JS.

Мой HTML-код

<div class="lets-connect-standalone" data-component-lets-connect-standalone>
<form action="" method="post" name="connectForm" class="connectForm" novalidate="novalidate">
    <fieldset>
        <div class="paginatedform">
            <div class="formpage">
                <div class="form-control formfield" data-component-form-control>
                    <input  type="text" name="firstName" class="firstName" placeholder="" required="true" />
                    <label for="firstName">First Name</label>
                    <span class="icon icon-Error-Icon error-exclamation"><span class="path1"></span><span class="path2"></span></span>
                </div>
                <div class="continue-btn">
                <button class="nextbutton btn-animation-fixed-border" type="button">CONTINUE</button></div>
            </div>    
        </div>
    </fieldset>
</form>

Мой JS-код

class LetsConnectStandalone {
constructor(el){
    let validator = $(".connectForm",el).validate({
        errorPlacement: function(label, element) {
            if(element.is(":radio")){
                console.log("element error radio : ",element);
                $('<br/>',el).insertAfter(element);
                label.addClass('arrow radio-error-text');
                label.appendTo( element.parents('.container') );
            }else{ 
                if(element.is("select")){
                    label.addClass('arrow select-error-text');
                }else{
                    if(element.is("textarea")){
                        label.addClass('arrow textarea-error-text');   
                    }else{
                        label.addClass('arrow error-text');
                    }
                }
                label.insertAfter( element );
            }                                   
        },        
        wrapper: 'span',
        ignore: ":hidden:not(.recaptchaField)",
        rules: {
            "g-recaptcha-response": "required"
        },
        submitHandler:function(form){
            if(!ispagevalid(form)){
                return;
            }else{ 
                let params = $(form).serialize();
                console.log("Form is submitted : ",params);        
            }
        },
        error: function(event){
            try{grecaptcha.reset();}catch(e){}
        }
    });
    let ispagevalid = function(formpage){
        let valid = true;
        $('input, select, radio, textarea', formpage).each(function(i, v){
            valid = validator.element(v) && valid;
        });
        if(!valid){
            try{grecaptcha.reset();}catch(e){}
        }
        return valid;
    }
    //Continue/Next button behavior
    $("button.nextbutton",el).click(function(event){
        let button = $(this);
        let currentPage = $(button,el).parent(".continue-btn").parent(".formpage");
        if(ispagevalid(currentPage)){
            let nextPage = $(currentPage).next();
            currentPage.hide();
            nextPage.show();
        }else{
        }
    });
}}export {LetsConnectStandalone};

Снимок экрана Chrome

enter image description here

Снимок экрана Internet Explorer

enter image description here

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Проверка jQuery 1.8.0, выпущенная 2018-09-09 ввела регрессию в IE11.

См. https://github.com/jquery-validation/jquery-validation/issues/2211

Проблема была исправлена ​​в выпуск 1.9.0 на 2018-11-28

0 голосов
/ 08 октября 2018

Все работает нормально, как только я снизил плагин jquery-validation до 1.17.0.Я использовал jquery 3.3.1.

...