PageSourceSearch

https://magyarszemle.hu/static/common/plugins/form.helper.1.0.0/validation/validation.js?t=1790939460

js magyarszemle.hu collected 2026-10-02 11:56:40 UTC 10,581 bytes, 314 lines download raw bytes

1// Netrix Form Validate for Netrix Form Class
2$.fn.nxValidate = function() {
3    var thisObj = {};
4    var debug = false;
5    
6    thisObj.error = false;
7	thisObj.errorMessage = '';
8    thisObj.valid = true;
9    thisObj.first_error = undefined;
10    thisObj.form = this;
11    
12    thisObj.tooltipHTML = '<div class="tooltip">##TEXT##<div class="arrow"></div></div>';
13    thisObj.tooltipClasses = {
14    	accept : 'sugo',
15    	error : 'error error-message',
16    	warning : 'warning'
17    };
18    
19    thisObj.pushTooltip = function(element,text,type){
20    	//ha nincs megadva jQuery element akkor vége
21    	if(!element) return false;
22    	
23    	//ha nincs szöveg akkor nem is kell
24    	if(!text) return false;
25    	
26    	//ha nincs beállítva type, akkor alapértelmezetten accept
27    	type = type.toString().toLowerCase();
28    	if( type != 'accept' && type != 'warning' && type != 'error' ) type = 'accept';
29    	
30    	var tooltipDiv = $(thisObj.tooltipHTML).html(function(i,e){
31    		return e.replace("##TEXT##",text.toString());
32    	}).addClass(thisObj.tooltipClasses[type]);
33
34    	element.next('.tooltip').remove();
35    	element.after(tooltipDiv.fadeIn());
36    };
37    
38    thisObj.elementValidation = function(element) {
39
40
41        thisObj.error = false;
42		
43		if($(element).attr('data-skipValidation')){
44			return thisObj.error;
45		}
46
47        // típusonként egyedi vizsgálat
48        var elementType = $(element).prop( 'tagName' ) + ( $(element).attr( 'type' ) == undefined ? '' :  '[' + $(element).attr( 'type' ) + ']' );
49		var validationDescriptor = $(element).attr('data-validation');
50		if(typeof validationDescriptor == 'string') {
51			try {
52                validationDescriptor = JSON.parse(validationDescriptor);
53            } catch (error) {
54                validationDescriptor = {};
55			}
56		}
57
58		var val = $(element).val();
59		if( val === null ) val = '';
60
61		if(validationDescriptor) {
62			switch ( elementType ) {
63
64				case 'INPUT[text]':
65				case 'INPUT[number]':
66				case 'INPUT[email]':
67				case 'INPUT[password]':
68				case 'TEXTAREA':
69				case 'SELECT':
70					if ( validationDescriptor.required && thisObj.isEmpty(val) )
71					{
72						thisObj.error = true;
73						thisObj.errorMessage = validationDescriptor.required.error_message;
74					}
75					if (!thisObj.error && validationDescriptor.rule && val.match(new RegExp(validationDescriptor.rule.pattern)) == null )
76					{
77						thisObj.error = true;
78						thisObj.errorMessage = validationDescriptor.rule.error_message;
79					}
80					if (!thisObj.error && validationDescriptor.not && val.match(new RegExp(validationDescriptor.not)) )
81					{
82						thisObj.error = true;
83						thisObj.errorMessage = validationDescriptor.not.error_message;
84					}
85					if (!thisObj.error && validationDescriptor.equal && val != ($('*[name=' + validationDescriptor.equal.name + ']').val()) )
86					{
87						thisObj.error = true;
88						thisObj.errorMessage = validationDescriptor.equal.error_message;
89					}
90					if (!thisObj.error && validationDescriptor.less_than && validationDescriptor.less_than.value && val > validationDescriptor.less_than.value )
91					{
92						thisObj.error = true;
93						thisObj.errorMessage = validationDescriptor.less_than.error_message;
94					}
95					if (!thisObj.error && validationDescriptor.greater_than && validationDescriptor.greater_than.value && val < validationDescriptor.greater_than.value )
96					{
97						thisObj.error = true;
98						thisObj.errorMessage = validationDescriptor.greater_than.error_message;
99					}
100					if (!thisObj.error && validationDescriptor.numeric && !$.isNumeric(val) )
101					{
102						thisObj.error = true;
103						thisObj.errorMessage = validationDescriptor.numeric.error_message;
104					}
105					try{
106					//if ( validationDescriptor.valid_email && val.match(new RegExp(/^[_a-z0-9-\+]+(\.[_a-z0-9-\+]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/, 'i')) == null )
107					if (!thisObj.error && validationDescriptor.valid_email && !thisObj.isValidEmail(val))
108					{
109						thisObj.error = true;
110						thisObj.errorMessage = validationDescriptor.valid_email.error_message;
111					}
112					}catch(e){}
113
114					if(validationDescriptor.callback){
115						var callback = null;
116						eval("callback = " + validationDescriptor.callback);
117						
118						if(typeof callback == "function"){
119							thisObj.error = !callback(val);
120						}
121					}
122					
123					break;
124
125				case 'INPUT[checkbox]':
126					if ( validationDescriptor.required && !$('input[name*="' + $(element).attr('name').replace(/\[.*?\]/g,"") + '"]').is( ":checked" ) )
127					{
128						thisObj.error = true;
129						thisObj.errorMessage = validationDescriptor.required.error_message;
130					}
131					break;
132
133				case 'INPUT[radio]':
134					if ( validationDescriptor.required && !$('input[name="' + $(element).attr('name') + '"]').is( ":checked" ) )
135					{
136						thisObj.error = true;
137						thisObj.errorMessage = validationDescriptor.required.error_message;
138					}
139					break;
140
141			}
142		}
143
144		if ( thisObj.error ) {			
145			if(element.parents('.input-group').length>0) {
146				element.parents('.input-group').find('input').addClass('error');
147				element.nextAll('.error-message.tooltip').eq(0)
148                	.removeClass('disabled')
149                	.addClass('show')
150                	.html(thisObj.errorMessage);
151			} else {
152				element.addClass('error');
153            	element.nextAll('.error-message.tooltip').eq(0)
154                	.removeClass('disabled')
155                	.addClass('show')
156                	.html(thisObj.errorMessage);
157            }
158
159            if(element.parents('form').find('.form-error-dialog').length>0) {
160            	element.parents('form').find('.form-error-dialog').removeClass('disabled').addClass('show');
161
162            	element.parents('form').find('.form-error-dialog').each(function() {
163            		if($(this).find('.message_'+element.attr('id')).length>0) {
164		        		$(this).find('.message_'+element.attr('id')).html(thisObj.errorMessage);
165					} else {
166						$(this).append('<a href="#'+element.attr('id')+'" class="message_'+element.attr('id')+'" style="order: '+$(element).index('.form-control')+';">'+thisObj.errorMessage+'</a>');
167					}
168            	});
169            }
170		} else {
171			if(element.parents('.input-group').length>0) {
172				element.parents('.input-group').find('input').removeClass('error');
173				element.nextAll('.error-message.tooltip').eq(0)
174                .addClass('disabled')
175                .removeClass('show');
176			} else {
177				element.removeClass('error');
178            	element.nextAll('.error-message.tooltip').eq(0)
179                .addClass('disabled')
180                .removeClass('show');
181        	}
182
183        	if(element.parents('form').find('.form-error-dialog').length>0) {
184
185        		element.parents('form').find('.form-error-dialog').each(function() {
186        			if($(this).find('.message_'+element.attr('id')).length>0) {
187        				$(this).find('.message_'+element.attr('id')).remove();
188        			}
189
190        			if($(this).html().trim()=="") {
191        				$(this).removeClass('show').addClass('disabled');
192        			}
193        		});
194            }
195		}
196
197        return thisObj.error;
198    }
199
200    thisObj.formValidation = function() {
201
202        // ha van form
203        if ( $(thisObj.form).length > 0 ) {
204
205            thisObj.valid = true;
206            thisObj.first_error = '';
207
208            // először mindenhonnan leszedjük a tooltipeket a formon belül
209            //$(thisObj.form).find('.error-message').addClass('disabled').removeClass('show');
210            //$(thisObj.form).find('.error').removeClass('error');
211
212            // megkeressük az ellenőrizni kívánt elemeket
213            $(thisObj.form).find(
214                'input[type="text"], ' +
215                'input[type="number"], ' +
216                'input[type="password"], ' +
217                'input[type="checkbox"], ' +
218                'input[type="radio"], ' +
219                'textarea, ' +
220                'select'
221            ).each(function(index, element) {
222
223            	if($(element).attr('data-skipValidation')) return;
224                // ha van a validáslás során hiba, akkor tooltip fel
225                if (thisObj.elementValidation( $(this) ) ) {
226                    // visszatérési értéket átállítjuk falsra
227                    thisObj.valid = false;
228                }
229            });
230				
231            // scroll az első hibás elemhez
232            //if ( !thisObj.valid ) 
233            //    $('html,body').animate({ scrollTop: $(thisObj.form).find('.error-message:not(.disabled):first').offset().top - 150 }, 200);
234				
235			thisObj.form.data('valid', thisObj.valid);
236			
237
238            return debug
239                ? false
240                : thisObj.valid;
241        }
242    }
243
244    thisObj.isValidEmail = function(data)
245    {
246		return data.match(new RegExp(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i)) != null;
247    }
248    
249    
250    thisObj.isEmpty = function(data)
251	{
252		if(typeof(data) == 'number')
253		{
254			return data == 0;
255		}
256		if(typeof(data) == 'boolean')
257		{
258			return !data;
259		}
260		if(typeof(data) == 'string')
261		{
262			if(data == '' || data == '0' || data == ' ') return true;
263			else return false;
264		}
265		if(typeof(data) == 'undefined' || data === null)
266		{
267			return true;
268		}
269		if(typeof(data.length) != 'undefined')
270		{
271			return data.length == 0;
272		}
273		var count = 0;
274		for(var i in data)
275		{
276			if(data.hasOwnProperty(i))
277			{
278			count ++;
279			}
280		}
281		return count == 0;
282	}
283
284    $(thisObj.form).on('submit ajaxsubmit', function() {
285        return thisObj.formValidation();
286    });
287
288    $(thisObj.form).on('blur', 'input[type="text"], input[type="number"], input[type="email"], input[type="password"], textarea',  function() {
289    	thisObj.elementValidation( $(this) );
290    });
291
292    $(thisObj.form).on('change', 'input[type="checkbox"], input[type="radio"], select, input.hasDatepicker', function() {
293        thisObj.elementValidation( $(this) );
294    });
295    
296    return thisObj;
297};
298
299window.nxValidate = $.fn.nxValidate;
300
301var nxValidations = [];
302
303$(document).ready(function() {
304	if ( $('form').length ) {
305		$('form').each(function() {
306			var form = $(this);
307			
308			if(form.attr('data-validate-when-ready') != 'false') {
309				nxValidations[form.attr("id")] = form.nxValidate();
310			}
311		});
312	}
313
314});

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.