From 281b694ae2e609a2d74a649cede0f81bdaa0bc91 Mon Sep 17 00:00:00 2001 From: Saif Sultan Date: Thu, 23 Jan 2025 07:39:36 +0530 Subject: [PATCH] `gw-limit-columns-in-survey-field-to-single-selection.js`: Added snippet to limit columns in survey field to single selections. --- ...mns-in-survey-field-to-single-selection.js | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 gravity-forms/gw-limit-columns-in-survey-field-to-single-selection.js diff --git a/gravity-forms/gw-limit-columns-in-survey-field-to-single-selection.js b/gravity-forms/gw-limit-columns-in-survey-field-to-single-selection.js new file mode 100644 index 00000000..e9364c26 --- /dev/null +++ b/gravity-forms/gw-limit-columns-in-survey-field-to-single-selection.js @@ -0,0 +1,38 @@ +/** + * Gravity Wiz // Gravity Forms // Limit Columns in Survey Field to Single Selection + * https://gravitywiz.com/ + * + * Video: https://www.loom.com/share/cf1f7f5bb254430c8ae939d5d4b9ea20 + * + * Instructions: + * + * 1. Install this snippet with our free Custom JavaScript plugin. + * https://gravitywiz.com/gravity-forms-code-chest/ + */ +// Update to the Survey field ID on your form. +const fieldId = '1'; +// If you want to exclude a column from this behavior, set the column label here. +// If you don't want it to exclude any column, set it to an empty string. +const exceptionColumnLabel = 'Not Available'; + +$( document ).on( 'change', `#field_${GFFORMID}_${fieldId} input[type="radio"]`, function () { + const $selectedRadio = $(this); + const $td = $selectedRadio.closest('td'); + + // Skip logic if the column label matches the exception label. + if ( exceptionColumnLabel && $td.data('label') == exceptionColumnLabel ) { + return; + } + + const ariaLabels = $selectedRadio.attr( 'aria-labelledby' ).split( ' ' ); + const columnId = ariaLabels.find( label => label.startsWith( 'likert_col_' ) ) ; + + if ( columnId ) { + // Find all radio buttons in the same column. + const $table = $selectedRadio.closest( 'table' ); + const $radiosInColumn = $table.find( `input[type="radio"][aria-labelledby*="${columnId}"]` ); + + // Deselect all other radio buttons in the same column. + $radiosInColumn.not( $selectedRadio ).prop( 'checked', false ); + } +});