DocLister and other snippets used to build any form parts know nothing about FormLister's placeholders, so you would care about selected/checked attributes in these snippets manually. The best solution is to use ajax and FormLister's api mode to get json response, so you need no FormLister's placeholders in your form at all - all error messages and classes are handled by js script, something like that:
$('#form-select-wrapper').on('submit', 'form', function(e){
e.preventDefault();
var form = $(this);
$.post('/assets/snippets/CommerceBoard/ajax.php',
form.serialize(),
function (response) {
$('div.invalid-feedback', form).remove();
if (response.status) {
if (typeof response.redirect !== 'undefined') window.location.href = response.redirect;
// or show success message, close modal window and so on...
} else {
if (typeof response.errors !== 'undefined' && Object.keys(response.errors).length > 0) {
for (var field in response.errors) {
var $field = $(field == 'social' ? '[name="' + field + '[]"]' : '[name="' + field + '"]', form).first().addClass('is-invalid').parents('.form-field');
var errors = response.errors[field];
for (var error in errors) {
if (errors[error] !== '') {
$field.append($('<div class="invalid-feedback">' + errors[error] + '</div>'));
}
}
}
var el = $('.is-invalid:first', form);
if (el.length != 0) {
var destination = el.offset().top;
$('html, body').animate( { scrollTop: destination }, 500 );
}
}
if (typeof response.messages !== 'undefined' && response.messages.length > 0) {
response.messages.forEach(function (message) {
alert(message);
});
}
}
},
'json'
).fail(function () {
alert('Failed to send form');
});
});```