Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 21 additions & 12 deletions js/formidable.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,23 +163,32 @@ function frmFrontFormJS() {
}

function validateForm( object ) {
let errors, r, rl, n, nl, fields, field, requiredFields;
let errors, n, nl, fields, field;

errors = [];

// Make sure required text field is filled in
requiredFields = jQuery( object ).find(
'.frm_required_field:visible input, .frm_required_field:visible select, .frm_required_field:visible textarea'
).filter( ':not(.frm_optional)' );
if ( requiredFields.length ) {
for ( r = 0, rl = requiredFields.length; r < rl; r++ ) {
if ( hasClass( requiredFields[r], 'ed_button' ) ) {
// skip rich text field buttons.
continue;
const vanillaJsObject = 'function' === typeof object.get ? object.get( 0 ) : object;

// Required field validation.
vanillaJsObject?.querySelectorAll( '.frm_required_field' ).forEach(
requiredField => {
const isVisible = requiredField.offsetParent !== null;
if ( ! isVisible ) {
return;
}
errors = checkRequiredField( requiredFields[r], errors );

requiredField.querySelectorAll( 'input, select, textarea' ).forEach(
requiredInput => {
if ( hasClass( requiredInput, 'frm_optional' ) || hasClass( requiredInput, 'ed_button' ) ) {
// skip rich text field buttons.
return;
}

errors = checkRequiredField( requiredInput, errors );
}
);
}
}
);

fields = jQuery( object ).find( 'input,select,textarea' );
if ( fields.length ) {
Expand Down