PageSourceSearch

https://www.fibabanka.com.tr/ResourcePackages/Fibabanka/assets/js/form-validations.js?v3

js fibabanka.com.tr collected 2026-09-24 22:51:34 UTC 20,385 bytes, 592 lines download raw bytes

1var formElement = $('.applicationForm');
2
3function add(accumulator, a) {
4    return parseInt(accumulator, 10) + parseInt(a, 10);
5}
6
7function validateTckn(tckn) {
8    tckn = tckn.toString();
9
10    if (tckn == "") { return false; }
11
12    if (tckn.split('').reduce(add) == 0) {
13        return false;
14    }
15
16    var isEleven = /^[0-9]{11}$/.test(tckn);
17    var totalX = 0;
18    for (var i = 0; i < 10; i++) {
19        totalX += Number(tckn.substr(i, 1));
20    }
21    var isRuleX = totalX % 10 == tckn.substr(10, 1);
22    var totalY1 = 0;
23    var totalY2 = 0;
24    for (var i = 0; i < 10; i += 2) {
25        totalY1 += Number(tckn.substr(i, 1));
26    }
27    for (var i = 1; i < 10; i += 2) {
28        totalY2 += Number(tckn.substr(i, 1));
29    }
30    var isRuleY = ((totalY1 * 7) - totalY2) % 10 == tckn.substr(9, 0);
31    return isEleven && isRuleX && isRuleY;
32};
33
34function validateVkn(value, element){
35    var v1 = 0, v2 = 0, v3 = 0, v4 = 0, v5 = 0, v6 = 0, v7 = 0, v8 = 0, v9 = 0,
36        v11 = 0, v22 = 0, v33 = 0, v44 = 0, v55 = 0, v66 = 0, v77 = 0, v88 = 0, v99 = 0,
37        lastDigit = 0, sum = 0;
38    if (value.length == 10){
39        v1 = (Number(value.charAt(0)) + 9) % 10;
40        v2 = (Number(value.charAt(1)) + 8) % 10;
41        v3 = (Number(value.charAt(2)) + 7) % 10;
42        v4 = (Number(value.charAt(3)) + 6) % 10;
43        v5 = (Number(value.charAt(4)) + 5) % 10;
44        v6 = (Number(value.charAt(5)) + 4) % 10;
45        v7 = (Number(value.charAt(6)) + 3) % 10;
46        v8 = (Number(value.charAt(7)) + 2) % 10;
47        v9 = (Number(value.charAt(8)) + 1) % 10;
48        lastDigit = Number(value.charAt(9));
49        v11 = (v1 * 512) % 9;
50        v22 = (v2 * 256) % 9;
51        v33 = (v3 * 128) % 9;
52        v44 = (v4 * 64) % 9;
53        v55 = (v5 * 32) % 9;
54        v66 = (v6 * 16) % 9;
55        v77 = (v7 * 8) % 9;
56        v88 = (v8 * 4) % 9;
57        v99 = (v9 * 2) % 9;
58        if (v1 != 0 && v11 == 0) {v11 = 9;}
59        if (v2 != 0 && v22 == 0) {v22 = 9;}
60        if (v3 != 0 && v33 == 0) {v33 = 9;}
61        if (v4 != 0 && v44 == 0) {v44 = 9;}
62        if (v5 != 0 && v55 == 0) {v55 = 9;}
63        if (v6 != 0 && v66 == 0) {v66 = 9;}
64        if (v7 != 0 && v77 == 0) {v77 = 9;}
65        if (v8 != 0 && v88 == 0) {v88 = 9;}
66        if (v9 != 0 && v99 == 0) {v99 = 9;}
67        sum = v11 + v22 + v33 + v44 + v55 + v66 + v77 + v88 + v99;
68        sum = (sum % 10 == 0) ? 0 : (10 - (sum % 10));
69        return (sum == lastDigit) ? true : false;
70    }
71};
72
73
74function isMailValid(mail) {
75    return /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/.test(mail);
76}
77
78function isURLValid(url) {
79    return /^(https?:\/\/|www\.)/.test(url);
80}
81
82function isTextOnly(value) {
83    var regex = new RegExp("^[a-zA-ZwçıiğöşüWÇIİĞÖŞÜ ]+$");
84    if (regex.test(value)) {
85        return true;
86    } else {
87        return false;
88    }
89}
90
91function isAlphanumeric(value) {
92    var regex = new RegExp("^[a-zA-Z0-9çÇıİğĞöÖşŞüÜ ]+$");
93    return regex.test(value);
94}
95
96
97function formatCurrency(input) {
98    function formatNumber(n) {
99        return n.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ".")
100    }
101
102    var input_val = input.val();
103    // don't validate empty input
104    if (input_val === "") {
105        return;
106    }
107
108    var original_len = input_val.length;
109
110    // initial caret position 
111    var caret_pos = input.prop("selectionStart");
112
113    // add commas to number
114    // remove all non-digits
115    input_val = formatNumber(input_val);
116    input_val = input_val;
117
118    // send updated string to input
119    input.val(input_val);
120
121    // put caret back in the right position
122    var updated_len = input_val.length;
123    caret_pos = updated_len - original_len + caret_pos;
124    input[0].setSelectionRange(caret_pos, caret_pos);
125}
126
127
128function verifyRecaptchaCallback(response) {
129    $('.required-captcha .form-error-text').hide();
130}
131
132function failedRecaptchaCallback() {
133    $('.required-captcha .form-error-text').show();
134}
135
136function bindRecaptchaCallbacks() {
137    if (document.querySelectorAll('#g-recaptcha').length < 1) {
138        return;
139    }
140
141    grecaptcha.render('g-recaptcha', {
142        'callback': verifyRecaptchaCallback,
143        'expired-callback	': failedRecaptchaCallback,
144        'error-callback	': failedRecaptchaCallback
145    });
146}
147
148function bindFormEventHandler() {
149    // input only for now
150    var inputs = formElement.find('.required:visible');
151
152    inputs.find('input[type="text"], textarea').focus(function () {
153        $(this).removeClass('fb__input--error')
154            .closest('.fiba-application-form__main-form-holder')
155            .find('.form-error-text').hide();
156    });
157
158    inputs.find('select').change(function () {
159        var selectCont = $(this).closest('.fiba-application-form__main-form-holder');
160        selectCont.find('.fb__select').removeClass('fb__select--error');
161        selectCont.find('.form-error-text').hide();
162    });
163
164    inputs.find('[type="checkbox"], [type="radio"], .required-least-one [type="checkbox"]').click(function () {
165        $(this)
166            .closest('.fiba-application-form__main-form-holder')
167            .find('.form-error-text').hide();
168    });
169
170    $('.required-least-one input[type="checkbox"]').click(function () {
171        $(this)
172            .closest('.fiba-application-form__main-form-holder')
173            .find('.form-error-text').hide();
174
175        $(this)
176            .closest('.fiba-application-form__main-form-holder')
177            .find('.error-show-once').remove();
178    });
179
180    $('.required-text-only input[type="text"]').keypress(function (e) {
181        var regex = new RegExp("^[a-zA-ZwçıiğöşüWÇIİĞÖŞÜ ]+$");
182        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
183        if (regex.test(str)) {
184            return true;
185        } else {
186            e.preventDefault();
187            return false;
188        }
189    });
190
191    /*
192    // adres only text and number
193    $("textarea[name=Adres]").on({
194        input: function () {
195            var rawText =  $(this).val();
196            var returnText = rawText.replace(/[^0-9a-zA-ZwçıiğöşüWÇIİĞÖŞÜ _]/g,'');
197            $(this).val(returnText);
198        }
199    });
200    */
201
202    $("input[data-type='currency']").on({
203        keyup: function () {
204            formatCurrency($(this));
205        },
206        keypress: function (e) {
207            return e.metaKey || // cmd/ctrl
208                e.which <= 0 || // arrow keys
209                e.which == 8 || // delete key
210                /[0-9]/.test(String.fromCharCode(e.which)); // numbers
211        },
212        paste: function (e) {
213            return e.metaKey ||
214                e.which <= 0 ||
215                e.which == 8 ||
216                /[0-9]/.test(String.fromCharCode(e.which));
217        }
218    });
219
220
221    $('.phone-zero-reset').on('keyup', function() {
222        var input = $(this);
223        var value = input.val();
224
225
226        // Mask parantez ve boşluk içeriyorsa sıfırı kaldır
227        if (value.startsWith("(0")) {
228            input.val("( " + value.substring(2));
229            console.log('Updated value:', input.val()); // Debugging line
230        }
231    });
232
233    formElement.submit(function (e) {
234        e.preventDefault();
235
236        var isValid = 1;
237
238        $('#krediUyariMesaj').addClass('hidden');
239
240        $('.error-show-once').remove();
241
242        inputs = formElement.find('.required:visible');
243        inputs.each(function (i, element) {
244            var curr = $(element);
245
246            curr.find('input[type="text"], textarea').removeClass('fb__input--error');
247            curr.children('.fb__select').removeClass('fb__select--error');
248            curr.children('.form-error-text').removeClass('hidden').hide();
249
250            if (curr.find('input[type="text"], textarea').length > 0 && curr.find('input[type="text"], textarea').val().length < 1) {
251                isValid = false;
252
253                curr.children('input[type="text"]').addClass('fb__input--error');
254                curr.children('.form-error-text').show();
255            }
256
257            if (typeof curr.children('input[type="text"]').attr('mask') !== 'undefined') {
258                var mask = curr.children('input[type="text"]').attr('mask');
259                if (curr.children('input[type="text"]').val().length < mask.length) {
260                    isValid = false;
261
262                    curr.children('input[type="text"]').addClass('fb__input--error');
263                    curr.children('.form-error-text').show();
264                }
265            }
266
267            if (curr.find('select').length > 0) {
268                var selects = curr.find('select');
269                selects.each(function (i, el) {
270                    var jurr = $(el).children('option:selected');
271
272                    if (jurr.val() === "") {
273                        isValid = false;
274
275                        jurr.parent().next().addClass('fb__select--error');
276                        jurr.closest('.fiba-application-form__main-form-holder').find('.form-error-text').show();
277                    }
278                });
279            }
280
281            if (curr.find('input[type="checkbox"]').length > 0) {
282                if (!curr.find('input[type="checkbox"]').is(':checked')) {
283                    isValid = false;
284                    curr.find('.form-error-text').show();
285                }
286            }
287        });
288
289        inputs = formElement.find('.required-number-only:visible');
290        inputs.each(function (i, element) {
291            var curr = $(element);
292            var inputVal = curr.find('input').val();
293            if (!$.isNumeric(inputVal)) {
294                isValid = false;
295
296                curr.find('input').addClass('fb__input--error');
297                curr.children('.form-error-text').removeClass('hidden').show();
298            }
299        });
300
301        inputs = formElement.find('.required-tckn:visible');
302        inputs.each(function (i, element) {
303            var curr = $(element);
304            var inputVal = curr.children('input').val();
305            if (!validateTckn(inputVal)) {
306                isValid = false;
307
308                curr.children('input').addClass('fb__input--error');
309                curr.children('.form-error-text').removeClass('hidden').show();
310            }
311        });
312
313        inputs = formElement.find('.vkn:visible');
314        inputs.each(function (i, element) {
315            var curr = $(element);
316            var inputVal = curr.children('input').val();
317            if (!validateVkn(inputVal)) {
318                isValid = false;
319
320                curr.children('input').addClass('fb__input--error');
321                curr.children('.form-error-text').removeClass('hidden').show();
322            }
323        });
324
325        inputs = formElement.find('.required-text-only');
326        inputs.each(function (i, element) {
327            var curr = $(element);
328            var inputVal = curr.children('input').val();
329            if (!isTextOnly(inputVal)) {
330                isValid = false;
331
332                curr.children('input').addClass('fb__input--error');
333                curr.children('.form-error-text').removeClass('hidden').show();
334            }
335        });
336
337        inputs = formElement.find('.required-email');
338        inputs.each(function (i, element) {
339            var curr = $(element);
340            var inputVal = curr.children('input').val();
341            if (!isMailValid(inputVal)) {
342                isValid = false;
343
344                curr.children('input').addClass('fb__input--error');
345                curr.children('.form-error-text').removeClass('hidden').show();
346            }
347        });
348
349        inputs = formElement.find('.required-website');
350        inputs.each(function (i, element) {
351            var curr = $(element);
352            var inputVal = curr.children('input').val();
353            if (!isURLValid(inputVal)) {
354                isValid = false;
355
356                curr.children('input').addClass('fb__input--error');
357                curr.children('.form-error-text').removeClass('hidden').show();
358            }
359        });
360
361        inputs = formElement.find('.required-alpha');
362        inputs.each(function (i, element) {
363            var curr = $(element);
364            var inputVal = curr.children('input').val();
365            if (!isAlphanumeric(inputVal)) {
366                isValid = false;
367
368                curr.children('input').addClass('fb__input--error');
369                curr.children('.form-error-text').removeClass('hidden').show();
370            }
371        });
372
373        inputs = $("input[data-type='currency']");
374        inputs.each(function (i, element) {
375            var curr = $(element);
376            var inputVal = curr.val();
377            if (inputVal.length < 1) {
378                isValid = false;
379
380                curr.addClass('fb__input--error');
381                curr.next('.form-error-text').removeClass('hidden').show();
382            } else {
383                curr.removeClass('fb__input--error');
384                curr.next('.form-error-text').addClass('hidden').hide();
385            }
386        });
387
388        inputs = formElement.find('.required-captcha');
389        inputs.each(function (i, element) {
390            var curr = $(element);
391            var inputVal = curr.find('textarea').val();
392            if (inputVal === "") {
393                isValid = false;
394
395                curr.children('.form-error-text').removeClass('hidden').show();
396            }
397        });
398
399        var checkbox = $('.required-least-one:not(.radio-active)');
400        checkbox.each(function (i, element) {
401            var curr = $(element);
402
403            curr.children('.form-error-text').removeClass('hidden').hide();
404
405            if (curr.find('input[type="checkbox"]:checked').length < 1) {
406                isValid = false;
407                curr.find('.form-error-text').show();
408            }
409        });
410
411        var radio = $('.required-least-one.radio-active');
412        radio.each(function (i, element) {
413            var curr = $(element);
414            curr.children('.form-error-text').removeClass('hidden').hide();
415
416            if (curr.find('input[type="radio"]:checked').length < 1) {
417                isValid = false;
418                curr.find('.form-error-text').show();
419            }
420            curr.find('input[type="radio"]').change(function(){
421                curr.find('.form-error-text').hide();
422            });
423        });
424
425
426        // check if vehicle application
427        var krediTutari = $('[name="KrediTutari"]');
428        var aracDegeri = $('[name="AracDegeri"]');
429        if (aracDegeri.length > 0 && krediTutari.length > 0) {
430            var krediTutariVal = krediTutari.val().replace(/\./g, '');
431            var aracDegeriVal = aracDegeri.val().replace(/\./g, '');
432
433            if (krediTutariVal == "" || aracDegeriVal == "") { return; }
434
435            krediTutariVal = parseInt(krediTutariVal);
436            aracDegeriVal = parseInt(aracDegeriVal);
437
438            if (!isNumber(krediTutariVal) || !isNumber(aracDegeriVal)) { return; }
439            if (krediTutariVal === 0 || aracDegeriVal === 0) { return;}
440
441            if (!checkVehicleCredit(aracDegeriVal, krediTutariVal)) {
442                $('#krediUyariMesaj').removeClass('hidden');
443
444                isValid = false;
445                return;
446            }
447
448        }
449
450        var konutDegeri = $('[name="KonutDegeri"]');
451        if (konutDegeri.length > 0 && krediTutari.length > 0) {
452            var krediTutariVal = krediTutari.val().replace(/\./g, '');
453            var konutDegeriVal = konutDegeri.val().replace(/\./g, '');
454
455            if (krediTutariVal == "" || konutDegeriVal == "") { return; }
456
457            krediTutariVal = parseInt(krediTutariVal);
458            konutDegeriVal = parseInt(konutDegeriVal);
459
460            var maxKredi = konutDegeriVal * 0.75;
461
462            if (krediTutariVal === 0 || konutDegeriVal === 0) { return; }
463
464            $('#maksKredi').text(formatNumber(maxKredi));
465
466            if (!(krediTutariVal <= maxKredi)) {
467                $('#krediUyariMesaj').removeClass('hidden');
468
469                isValid = false;
470                return;
471            }
472        }
473
474        if (formElement.hasClass('submitted')) {
475            return;
476        }
477
478
479
480        if (isValid) {
481
482            var adField = formElement.find('input[name="Ad"]');
483            var soyadField = formElement.find('input[name="Soyad"]');
484            if (adField.length > 0 && soyadField.length > 0) {
485                formElement.find('input[name="AdSoyad"]').val(adField.val().trim() + ' ' + soyadField.val().trim());
486            }
487
488            if (formElement[0].className.includes('portal-form')) {
489                
490                $('.portal-step-1').hide();
491                //$('.portal-step-2').find('.fiba-application-form__main-form-holder.yes-input.req').addClass('required');
492                $('.portal-step-2').find('.fiba-application-form__main-form-holder.yes-input.req').each(function() {
493                    if ($(this).css('display') !== 'none') {
494                        $(this).addClass('required');
495                    }
496                });
497                $('.portal-step-2').show();
498            
499                // İkinci adım required alanları kontrol et
500                let requiredFields = formElement.find('.portal-step-2 .required input, .portal-step-2 .required select, .portal-step-2 .required .checkbox');
501
502                let allFieldsValid = true;
503                requiredFields.each(function() {
504                    let fieldValue = $(this).val().trim(); 
505                    let fieldName = $(this).attr('name');
506                    let fieldType = $(this).attr('type');
507                    
508                    if (fieldName) {
509                        if (fieldType === 'checkbox') {
510                            if (!$(this).is(':checked')) {
511                                allFieldsValid = false;
512                                return false;
513                            }
514                        } else if (!fieldValue) {
515                            allFieldsValid = false;
516                            return false;
517                        }
518                    }
519                });
520            
521                if (allFieldsValid) {
522                    grecaptcha.execute('6LdcQHwUAAAAAIWmRCGMy2kHNW2TLcZVXiSOBziC', {
523                        action: 'general'
524                    }).then(function(token) {
525                        var tokenField = document.querySelector("#g-recaptcha-response");
526                        if (tokenField !== null) {
527                            tokenField.value = token;
528        
529                            formElement.addClass('submitted');
530                            formElement[0].submit();
531                        }
532                    });
533                }
534            }else{
535                grecaptcha.execute('6LdcQHwUAAAAAIWmRCGMy2kHNW2TLcZVXiSOBziC', {
536                    action: 'general'
537                }).then(function (token) {
538                    var tokenField = document.querySelector("#g-recaptcha-response");
539                    if (tokenField !== null) {
540                        tokenField.value = token;
541    
542                        formElement.addClass('submitted');
543                        formElement[0].submit();
544                    }
545                });
546            }
547
548        }
549    });
550}
551
552function isNumber(val) {
553    return typeof val === "number";
554}
555
556function checkVehicleCredit(aracDegeri, krediTutari) {
557    var aracDegerFormulLimit = 50000;
558    var maksimumKrediTutar = 0;
559
560    if (aracDegeri <= aracDegerFormulLimit) {
561        maksimumKrediTutar = aracDegeri * 0.7;
562    } else {
563        maksimumKrediTutar = (35000 + aracDegeri - 50000) * 0.5;
564    }
565
566    $('#maksKredi').text(formatNumber(maksimumKrediTutar));
567
568    if (krediTutari <= maksimumKrediTutar) {
569        return true;
570    } else {
571        return false;
572    }
573}
574
575function formatNumber(n) {
576    return n.toString().replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ".");
577}
578
579function bindFormMasks() {
580    var inputs = $('.applicationForm input');
581    inputs.each(function (i, el) {
582        var curr = $(el);
583        if (typeof curr.attr('mask') !== "undefined") {
584            curr.mask(curr.attr('mask'), {
585                clearIfNotMatch: false
586            });
587        }
588    });
589}
590
591bindFormEventHandler();
592bindFormMasks();

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.