JQuery表单验证在chrome、firefox和edge中运行良好,但在InternetExplorer11中失败
我正在尝试使用“jquery验证”:“^1.18.0”插件验证表单。这段代码在chrome、firefox和edge中运行良好。但在InternetExplorer11中,即使所有字段都有有效数据,该插件也会显示无效的表单消息。控制台中没有错误 我正在使用Handlbar JS 我的HTML代码是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="
<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