PageSourceSearch

https://pajaronian.com/wp-content/plugins/wp-comment-fields/js/validate.js?ver=5.1

js pajaronian.com collected 2026-09-24 09:17:27 UTC 7,091 bytes, 176 lines download raw bytes

1/**
2 * WPComment Validate
3 * @Since version 24.2
4 * By: Najeeb Ahmad
5 * Date: January 19, 2022
6 **/
7 
8/*global jQuery wpcomment_get_element_value wpcomment_input_vars*/
9 
10const WPComment_Validate = {
11 
12    field_meta: wpcomment_input_vars.field_meta.filter(f => f.required === "on" ),
13    passed: true,
14    $wpcomment_input: jQuery('.wpcomment-input.wpcomment-required'),
15    $wpcomment_input_texts: jQuery('.wpcomment-input.wpcomment-required.text, .wpcomment-input.wpcomment-required.email, .wpcomment-input.wpcomment-required.number,.wpcomment-input.wpcomment-required.quantityoption'),
16    
17    init : async () => {
18        
19        jQuery(document).bind('wpcomment_uploaded_file_removed', async function(e) {
20            WPComment_Validate.validate_data()
21            .then(WPComment_Validate.enable_button, WPComment_Validate.disable_button);
22        });
23        
24        jQuery(document).bind('wpcomment_field_shown', async function(e) {
25            WPComment_Validate.validate_data()
26            .then(WPComment_Validate.enable_button, WPComment_Validate.disable_button);
27        });
28        
29        jQuery(document).bind('wpcomment_field_hidden', async function(e) {
30            WPComment_Validate.validate_data()
31            .then(WPComment_Validate.enable_button, WPComment_Validate.disable_button);
32        });
33        
34        jQuery(document).on('change', WPComment_Validate.$wpcomment_input,  async function(e){
35            WPComment_Validate.validate_data()
36            .then(WPComment_Validate.enable_button, WPComment_Validate.disable_button);
37        });
38        
39        // keyup events for texts input e.g: text,email,number
40        WPComment_Validate.$wpcomment_input_texts.keyup(async function(e){
41            WPComment_Validate.validate_data()
42            .then(WPComment_Validate.enable_button, WPComment_Validate.disable_button);
43        });
44        
45        WPComment_Validate.validate_data()
46        .then(WPComment_Validate.enable_button, WPComment_Validate.disable_button);
47        
48    },
49    
50    validate_data: () => {
51        
52        return new Promise( function(resolve, reject){
53            
54            // console.log(WPComment_Validate.field_meta);
55            const invalid_fields = WPComment_Validate.field_meta.filter(f => !WPComment_Validate.field_has_valid_data(f) && !WPComment_Validate.is_field_hidden(f.data_name))
56            const validate_result = invalid_fields.length > 0 ? false : true;
57            
58            return validate_result ? resolve() : reject(invalid_fields);
59        });
60    },
61    
62    is_field_hidden: (data_name) => {
63        
64        // console.log(data_name, jQuery(`.wpcomment-field-wrapper.${data_name}.wpcomment-c-hide`).length > 0);
65       return jQuery(`.wpcomment-field-wrapper.${data_name}.wpcomment-c-hide`).length > 0;
66    },
67    
68    /**
69	 * When a variation is hidden.
70	 */
71	disable_button: (invalid_fields) => {
72		const $form = jQuery('form.comment-form');
73		$form
74			.find( 'input[type="submit"]' )
75			.prop('disabled', true);
76	   // console.log('disabled', invalid_fields);
77		WPComment_Validate.show_errors(invalid_fields);
78	},
79	
80	enable_button: () => {
81		const $form = jQuery('form.comment-form');
82		$form
83			.find( 'input[type="submit"]' )
84			.prop('disabled', false);
85	    
86	    //hide error
87	    jQuery('#wpcomment-error-container').html('');
88	},
89	
90	show_errors: (invalid_fields) => {
91	   // console.log(invalid_fields);
92	    const $container = jQuery('#wpcomment-error-container').html('');
93	    const $ul_container = jQuery('<ul/>').addClass('woocommerce-error').appendTo($container);
94	    invalid_fields.map(f => $ul_container.append( `<li>${WPComment_Validate.get_message(f)}</li>`) );
95	},
96	
97	get_message(field_meta){
98	    
99	    return field_meta.error_message !== "" ? `<b>${field_meta.title}</b> ${field_meta.error_message}` : `<b>${field_meta.title}</b> ${wpcomment_input_vars.validate_msg}`;
100	},
101	
102	field_has_valid_data(field) {
103        
104        // console.log(field);
105        const data_name = field.data_name;
106        const wpcomment_type = field.type === 'imageselect' ? 'imageselect' : WPComment_Validate.get_input_dom_type(data_name);
107        let element_value = '';
108        
109        switch (wpcomment_type) {
110            case 'switcher':
111            case 'radio':
112                element_value = jQuery(`.wpcomment-input[data-data_name="${data_name}"]:checked`).length;
113                return element_value !== 0;
114                break;
115            case 'palettes':
116            case 'checkbox':
117                element_value = jQuery('input[name="wpcomment[fields][' + data_name + '][]"]:checked').length;
118                if( (field.min_checked && element_value < Number(field.min_checked) ) ||
119                (field.max_checked && element_value > Number(field.max_checked) )
120                ){
121                    // console.log('no ok');
122                    return false;
123                }else{
124                    return element_value !== 0;
125                }
126                break;
127            case 'image':
128                element_value = jQuery(`.wpcomment-input[data-data_name="${data_name}"]:checked`).length;
129                if( (field.min_checked && element_value < Number(field.min_checked) ) ||
130                (field.max_checked && element_value > Number(field.max_checked) )
131                ){
132                    // console.log('no ok');
133                    return false;
134                }else{
135                    return element_value !== 0;
136                }
137                break;
138            case 'imageselect':
139                element_value = jQuery(`.wpcomment-input[data-data_name="${data_name}"]:checked`).length;
140                // element_value = 0;
141                return element_value !== 0;
142                break;
143            case 'fixedprice':
144                var render_type = jQuery(`.wpcomment-input-${data_name}`).attr('data-input');
145                if( render_type == 'radio' ){
146                    element_value = jQuery(`.wpcomment-input[data-data_name="${data_name}"]:checked`).length;
147                }else{
148                    element_value = jQuery(`.wpcomment-input[data-data_name="${data_name}"]`).val().length;
149                }
150                return element_value !== 0;
151                break;
152    
153            default:
154                element_value = jQuery(`.wpcomment-input[data-data_name="${data_name}"]`).val() != null ? jQuery(`.wpcomment-input[data-data_name="${data_name}"]`).val().length : 0;
155                return element_value !== 0;
156                break;
157        }
158        
159    },
160    
161    
162    text_events(e) {
163        console.log(e.target)        
164    },
165    
166    get_input_dom_type(data_name) {
167
168        // const field_obj = jQuery(`input[name="wpcomment[fields][${data_name}]"], input[name="wpcomment[fields][${data_name}[]]"], select[name="wpcomment[fields][${data_name}]"]`);
169        const field_obj = jQuery(`.wpcomment-input[data-data_name="${data_name}"]`);
170        const wpcomment_type = field_obj.closest('.wpcomment-field-wrapper').data('type');
171        return wpcomment_type;
172    }
173	
174}
175
176WPComment_Validate.init();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.