Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery表单验证在chrome、firefox和edge中运行良好,但在InternetExplorer11中失败_Jquery_Internet Explorer_Jquery Validate_Handlebars.js - Fatal编程技术网

JQuery表单验证在chrome、firefox和edge中运行良好,但在InternetExplorer11中失败

JQuery表单验证在chrome、firefox和edge中运行良好,但在InternetExplorer11中失败,jquery,internet-explorer,jquery-validate,handlebars.js,Jquery,Internet Explorer,Jquery Validate,Handlebars.js,我正在尝试使用“jquery验证”:“^1.18.0”插件验证表单。这段代码在chrome、firefox和edge中运行良好。但在InternetExplorer11中,即使所有字段都有有效数据,该插件也会显示无效的表单消息。控制台中没有错误 我正在使用Handlbar JS 我的HTML代码是 <div class="lets-connect-standalone" data-component-lets-connect-standalone> <form action="

我正在尝试使用“jquery验证”:“^1.18.0”插件验证表单。这段代码在chrome、firefox和edge中运行良好。但在InternetExplorer11中,即使所有字段都有有效数据,该插件也会显示无效的表单消息。控制台中没有错误

我正在使用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};
class LetsConnectStandalone{
建造师(el){
让验证器=$(“.connectForm”,el).validate({
errorPlacement:函数(标签、元素){
if(元素is(“:radio”)){
日志(“元素错误无线电:”,元素);
$('
',el).insertAfter(元素); label.addClass('arrow radio error text'); label.appendTo(element.parents('.container')); }否则{ if(element.is(“选择”)){ label.addClass('arrow select error text'); }否则{ if(element.is(“textarea”)){ label.addClass('arrow textarea error text'); }否则{ label.addClass('arrow error text'); } } 标签。插入符(元素); } }, 包装器:“span”, 忽略:“:隐藏:不(.recaptchaField)”, 规则:{ “g-recaptcha-response”:“必需” }, submitHandler:函数(表单){ 如果(!ispagevalid(表格)){ 返回; }否则{ 设params=$(form).serialize(); 日志(“表单已提交:”,参数); } }, 错误:函数(事件){ 试试{grecaptcha.reset();}catch(e){} } }); 让ispagevalid=函数(formpage){ 让valid=true; $('input,select,radio,textarea',formpage)。每个(函数(i,v){ valid=验证器。元素(v)和&valid; }); 如果(!有效){ 试试{grecaptcha.reset();}catch(e){} } 返回有效; } //继续/下一步按钮行为 $(“button.nextbutton”,el)。单击(函数(事件){ let button=$(此项); 让currentPage=$(按钮,el).parent(.continue btn”).parent(.formpage); 如果(ispagevalid(当前页)){ 让nextPage=$(currentPage).next(); currentPage.hide(); nextPage.show(); }否则{ } }); }}导出{LetsConnectStandalone};
chrome的截图

Internet Explorer截图


一旦我将jquery验证插件降级到1.17.0,一切正常。我使用的是jquery 3.3.1。

jquery验证在IE11上引入了回归


该问题已于2018年11月28日修复,您是否进行过故障排除?什么版本的资源管理器?控制台错误有哪些?你检查过DOM了吗?你在没有handlebar.js的情况下试过吗?如果你不知道如何在这个页面上运行,请不要使用代码片段功能。jQuery和DOM的可怕混合<代码>$('.talkabout cnt',dom2).children()[1].innerHTML==errorLable请让开发人员查看此代码。我还建议您将代码压缩到尽可能小的数量,以再现问题。你不需要向我们展示所有谷歌验证码JavaScript代码。只是太多的绒毛,我不想进去。有控制台错误吗?Diji给出错误的问题是,即使它不应该降级到jQuery Validate版本1.17.0吗?由于1.17.0是最新的官方版本,所以您应该一直使用它。我不知道如何使用,但当我完成npm安装时,我得到了1.18.0