验证时复选框下方的错误消息 Bootstrap 4
Error message below checkbox's when validate Bootstrap 4
验证时我无法让错误消息显示在我的复选框下方。我知道问题出在哪里但不确定如何解决。这是我的复选框 html,其中有 22 个。
<div class="row">
<div class="form-group col-md-12">
<div class=""><label for="form_servicesRequested" class="names">Services Requested: *</label></div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="DJ">
<label class="form-check-label">DJ</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Videography">
<label class="form-check-label">Videography</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Photography">
<label class="form-check-label">Photography</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Wedding Officate">
<label class="form-check-label">Wedding Officiate</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Limo">
<label class="form-check-label">Limo</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Party Bus">
<label class="form-check-label">Party Bus</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Up Lighting">
<label class="form-check-label">Up Lighting</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Hed Table Backdrop">
<label class="form-check-label">Head Table Backdrop</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Head Table Decor">
<label class="form-check-label">Head Table Decor</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Sound For Ceremony">
<label class="form-check-label">Sound For Ceremony</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Arch">
<label class="form-check-label">Arch</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Guest Sign In Table Decor">
<label class="form-check-label">Guest Sign In Table Decor</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Gobo Design">
<label class="form-check-label">Gobo Design</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Ceiling Drapery">
<label class="form-check-label">Ceiling Drapery</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Sand Ceremont Set">
<label class="form-check-label">Sand Ceremony Set</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Chair Cover Sash">
<label class="form-check-label">Chair Cover Sash</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Time Capsule">
<label class="form-check-label">Time Capsule</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Cake Table Decor">
<label class="form-check-label">Cake Table Decor</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Wine Box Set">
<label class="form-check-label">Wine Box Set</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Unity Candle Set">
<label class="form-check-label">Unity Candle Set</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Ceremony Table">
<label class="form-check-label">Ceremony Table</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Wedding Coordinator">
<label class="form-check-label">Wedding Coordinator</label>
</div>
</div>
</div>
这是带有规则的验证脚本,不显示所有规则,只显示复选框的规则:
$( document ).ready( function () {
$( "#contact-form" ).validate( {
rules: {
"services[]": {
required: true,
minlength: 2
}
},
messages: {
"services[]": "Please select at least 2 services"
},
errorElement: "em",
errorPlacement: function ( error, element ) {
// Add the `invalid-feedback` class to the error element
error.addClass( "invalid-feedback" );
if ( element.prop( "type" ) === "checkbox" ) {
error.insertAfter( element.next( "label" ) );
} else {
error.insertAfter( element );
}
},
highlight: function ( element, errorClass, validClass ) {
$( element ).addClass( "is-invalid" ).removeClass( "is-valid" );
},
unhighlight: function (element, errorClass, validClass) {
$( element ).addClass( "is-valid" ).removeClass( "is-invalid" );
}
} );
} );
现在,当我进行验证时,它会显示复选框的错误消息,但它紧挨着标签 class DJ。我确定问题出在此处的代码中:
errorElement: "em",
errorPlacement: function ( error, element ) {
// Add the `invalid-feedback` class to the error element
error.addClass( "invalid-feedback" );
if ( element.prop( "type" ) === "checkbox" ) {
error.insertAfter( element.next( "label" ) );
} else {
error.insertAfter( element );
}
},
highlight: function ( element, errorClass, validClass ) {
$( element ).addClass( "is-invalid" ).removeClass( "is-valid" );
},
unhighlight: function (element, errorClass, validClass) {
$( element ).addClass( "is-valid" ).removeClass( "is-invalid" );
}
} );
} );
这部分是问题所在,不确定如何将错误消息显示在所有复选框下方,而不是紧挨着标签 DJ。
if ( element.prop( "type" ) === "checkbox" ) {
error.insertAfter( element.next( "label" ) );
} else {
error.insertAfter( element );
}
这是一张显示错误消息出现在 DJ 旁边的图像;
如果有人能帮助我解决这个问题,我将不胜感激。表单上的其他所有内容都正确验证。提前谢谢你。
正在替换
error.insertAfter( element.next( "label" ) );
与
error.insertAfter( element.closest( ".form-group" ) );
应将错误消息放在所有复选框之后。
要完全控制显示错误的元素,您只需在列表底部添加一个具有唯一 ID 的专用容器并使用类似以下内容:
error.appendTo(document.querySelector('#errorContainerId'))
您可以对 error
对象使用任何 jQuery DOM 操作方法。
验证时我无法让错误消息显示在我的复选框下方。我知道问题出在哪里但不确定如何解决。这是我的复选框 html,其中有 22 个。
<div class="row">
<div class="form-group col-md-12">
<div class=""><label for="form_servicesRequested" class="names">Services Requested: *</label></div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="DJ">
<label class="form-check-label">DJ</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Videography">
<label class="form-check-label">Videography</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Photography">
<label class="form-check-label">Photography</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Wedding Officate">
<label class="form-check-label">Wedding Officiate</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Limo">
<label class="form-check-label">Limo</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Party Bus">
<label class="form-check-label">Party Bus</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Up Lighting">
<label class="form-check-label">Up Lighting</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Hed Table Backdrop">
<label class="form-check-label">Head Table Backdrop</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Head Table Decor">
<label class="form-check-label">Head Table Decor</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Sound For Ceremony">
<label class="form-check-label">Sound For Ceremony</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Arch">
<label class="form-check-label">Arch</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Guest Sign In Table Decor">
<label class="form-check-label">Guest Sign In Table Decor</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Gobo Design">
<label class="form-check-label">Gobo Design</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Ceiling Drapery">
<label class="form-check-label">Ceiling Drapery</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Sand Ceremont Set">
<label class="form-check-label">Sand Ceremony Set</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Chair Cover Sash">
<label class="form-check-label">Chair Cover Sash</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Time Capsule">
<label class="form-check-label">Time Capsule</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Cake Table Decor">
<label class="form-check-label">Cake Table Decor</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Wine Box Set">
<label class="form-check-label">Wine Box Set</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Unity Candle Set">
<label class="form-check-label">Unity Candle Set</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Ceremony Table">
<label class="form-check-label">Ceremony Table</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="services[]" value="Wedding Coordinator">
<label class="form-check-label">Wedding Coordinator</label>
</div>
</div>
</div>
这是带有规则的验证脚本,不显示所有规则,只显示复选框的规则:
$( document ).ready( function () {
$( "#contact-form" ).validate( {
rules: {
"services[]": {
required: true,
minlength: 2
}
},
messages: {
"services[]": "Please select at least 2 services"
},
errorElement: "em",
errorPlacement: function ( error, element ) {
// Add the `invalid-feedback` class to the error element
error.addClass( "invalid-feedback" );
if ( element.prop( "type" ) === "checkbox" ) {
error.insertAfter( element.next( "label" ) );
} else {
error.insertAfter( element );
}
},
highlight: function ( element, errorClass, validClass ) {
$( element ).addClass( "is-invalid" ).removeClass( "is-valid" );
},
unhighlight: function (element, errorClass, validClass) {
$( element ).addClass( "is-valid" ).removeClass( "is-invalid" );
}
} );
} );
现在,当我进行验证时,它会显示复选框的错误消息,但它紧挨着标签 class DJ。我确定问题出在此处的代码中:
errorElement: "em",
errorPlacement: function ( error, element ) {
// Add the `invalid-feedback` class to the error element
error.addClass( "invalid-feedback" );
if ( element.prop( "type" ) === "checkbox" ) {
error.insertAfter( element.next( "label" ) );
} else {
error.insertAfter( element );
}
},
highlight: function ( element, errorClass, validClass ) {
$( element ).addClass( "is-invalid" ).removeClass( "is-valid" );
},
unhighlight: function (element, errorClass, validClass) {
$( element ).addClass( "is-valid" ).removeClass( "is-invalid" );
}
} );
} );
这部分是问题所在,不确定如何将错误消息显示在所有复选框下方,而不是紧挨着标签 DJ。
if ( element.prop( "type" ) === "checkbox" ) {
error.insertAfter( element.next( "label" ) );
} else {
error.insertAfter( element );
}
这是一张显示错误消息出现在 DJ 旁边的图像;
如果有人能帮助我解决这个问题,我将不胜感激。表单上的其他所有内容都正确验证。提前谢谢你。
正在替换
error.insertAfter( element.next( "label" ) );
与
error.insertAfter( element.closest( ".form-group" ) );
应将错误消息放在所有复选框之后。
要完全控制显示错误的元素,您只需在列表底部添加一个具有唯一 ID 的专用容器并使用类似以下内容:
error.appendTo(document.querySelector('#errorContainerId'))
您可以对 error
对象使用任何 jQuery DOM 操作方法。