{"ScriptPreparationCode":"var validator = $(\u0027#theform\u0027).validate({\r\n groups: {\r\n checkgroup: \u0027a b c d e f g h i j k l m n o p q r s t u v w x y z\u0027,\r\n },\r\n});\r\n\r\n$.validator.addMethod( \u0022require_from_group_builtin\u0022, function( value, element, options ) {\r\n var $fields = $( options[ 1 ], element.form ),\r\n $fieldsFirst = $fields.eq( 0 ),\r\n validator = $fieldsFirst.data( \u0022valid_req_grp\u0022 ) ? $fieldsFirst.data( \u0022valid_req_grp\u0022 ) : $.extend( {}, this ),\r\n isValid = $fields.filter( function() {\r\n return validator.elementValue( this );\r\n } ).length \u003E= options[ 0 ];\r\n\r\n // Store the cloned validator for future validation\r\n $fieldsFirst.data( \u0022valid_req_grp\u0022, validator );\r\n\r\n // If element isn\u0027t being validated, run each require_from_group field\u0027s validation rules\r\n if ( !$( element ).data( \u0022being_validated\u0022 ) ) {\r\n $fields.data( \u0022being_validated\u0022, true );\r\n $fields.each( function() {\r\n validator.element(this);\r\n } );\r\n $fields.data(\u0027clientside_validation_validated\u0027, false)\r\n $fields.data( \u0022being_validated\u0022, false );\r\n }\r\n return isValid;\r\n}, $.validator.format( \u0022Please fill at least {0} of these fields.\u0022 ) );\r\n\r\n$.validator.addMethod( \u0022require_from_group_modified\u0022, function( value, element, options ) {\r\n var $fields = $( options[ 1 ], element.form ),\r\n $fieldsFirst = $fields.eq( 0 ),\r\n validator = $fieldsFirst.data( \u0022valid_req_grp\u0022 ) ? $fieldsFirst.data( \u0022valid_req_grp\u0022 ) : $.extend( {}, this ),\r\n isValid = $fields.filter( function() {\r\n return validator.elementValue( this );\r\n } ).length \u003E= options[ 0 ];\r\n\r\n // Store the cloned validator for future validation\r\n $fieldsFirst.data( \u0022valid_req_grp\u0022, validator );\r\n\r\n // If element isn\u0027t being validated, run each require_from_group field\u0027s validation rules\r\n if ( !$( element ).data( \u0022being_validated\u0022 ) ) {\r\n $fields.data( \u0022being_validated\u0022, true );\r\n $fields.each( function() {\r\n /* Patch adapted from\r\n\t\t\t * https://www.drupal.org/project/clientside_validation/issues/2884667\r\n\t\t\t * https://www.drupal.org/files/issues/clientside_validation-select_or_other_optimization-2884667-4-7.patch\r\n\t\t\t */\r\n if ($(this).data(\u0027clientside_validation_validated\u0027)) {\r\n return;\r\n } else {\r\n $(this).data(\u0027clientside_validation_validated\u0027, true);\r\n validator.element(this);\r\n }\r\n } );\r\n $fields.data(\u0027clientside_validation_validated\u0027, false)\r\n $fields.data( \u0022being_validated\u0022, false );\r\n }\r\n return isValid;\r\n}, $.validator.format( \u0022Please fill at least {0} of these fields.\u0022 ) );\r\n","TestCases":[{"Name":"built-in require_from_group","Code":"var selector = \u0027input[type=\u0022checkbox\u0022]\u0027;\r\nvar $fields = $(selector);\r\n\r\n$fields.rules(\u0027add\u0027, {\r\n require_from_group_builtin: [1, selector]\r\n});\r\n\r\n$fields.eq(0).valid();","IsDeferred":false},{"Name":"modified require_from_group","Code":"var selector = \u0027input[type=\u0022checkbox\u0022]\u0027;\r\nvar $fields = $(selector);\r\n\r\n$fields.rules(\u0027add\u0027, {\r\n require_from_group_modified: [1, selector]\r\n});\r\n\r\n$fields.eq(0).valid();","IsDeferred":false}]}