//Validation //проверяет обязательные для заполнения поля (для всех элементов формы) var validateRequired = function(formId, inputName, mes) { validateRequiredInput(formId, inputName, mes); validateRequiredSelect (formId, inputName, mes); validateRequiredTextarea(formId, inputName, mes); validateRequiredDatepicker(formId, inputName, mes); validateRequiredCombobox(formId, inputName, mes); }; //валидация Email var validateEmail = function(formId, inputName, mes) { obj = $('#' + formId + ' input[name="' + inputName + '"]'); if(obj.length!=0) { var errorHtml = mes; var testEmail = /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i; obj.bind('click', function() { if (!$(this).hasClass('d_val')) { $(this).siblings('.ft-err').hide(); } }); obj.bind('blur', function() { if (!$(this).hasClass('d_val')) { if (testEmail.test($(this).val())) { $(this).siblings('.ft-err').hide(); } else { $(this).siblings('.ft-err').show(); $(this).siblings('.ft-err').html(errorHtml); } } }); } }; //проверяет форму перед submit var validateForm = function(formId) { //проверка обязательных для заполнения элементов. isValid = true; obj = $('#' + formId + ' .required:not(:disabled)'); if (obj.length>0) { obj.each(function(){ if ($(this).hasClass('d_val') || ($(this).is('select:not(.combobox)') && $(this).val()=='')) { $(this).siblings('.ft-err').show(); $(this).parents('.ui-widget').next('.ft-err').show(); $(this).parents('.f-capcha').next('.f-err-all').show(); isValid = false; } }); } return isValid; }; var validateRequiredInput = function(formId, inputName, mes) { obj = $('#' + formId + ' input[name="' + inputName + '"]:not(.datepicker-red)'); var errorHtml = mes; obj.addClass('required'); if (obj.length!=0) { var d_value = obj.attr('title'); if (obj.hasClass('d_val')) { obj.val(d_value); } obj.siblings('.ft-err').html(errorHtml); obj.parents('.f-capcha').next('.f-err-all').find('div').html(errorHtml); obj.bind('click', function() { if($(this).val()==d_value || $(this).val()=='') { $(this).removeClass("d_val").val(""); $(this).siblings('.ft-err').hide(); $(this).parents('.f-capcha').next('.f-err-all').hide(); } }); obj.bind('focus', function() { if($(this).val()==d_value || $(this).val()=='') { $(this).removeClass("d_val").val(""); $(this).siblings('.ft-err').hide(); $(this).parents('.f-capcha').next('.f-err-all').hide(); } }); obj.bind('blur', function() { if($(this).val()=="") { $(this).addClass("d_val").val(d_value); $(this).siblings('.ft-err').html(errorHtml); $(this).siblings('.ft-err').show(); $(this).parents('.f-capcha').next('.f-err-all').show(); } else { $(this).siblings('.ft-err').hide(); $(this).parents('.f-capcha').next('.f-err-all').hide(); } }); } }; var validateRequired1of2Input = function(formId, inputName1, inputName2, mes) { var obj1 = $('#' + formId + ' input[name="' + inputName1 + '"]'); var obj2 = $('#' + formId + ' input[name="' + inputName2 + '"]'); if (typeof mes != 'undefined') { var errorHtml = mes; obj2.siblings('.ft-err').remove(); } obj1.addClass('required'); if (obj1.length!=0 && obj2.length!=0) { var d_value = obj1.attr('title'); if (obj1.hasClass('d_val')) { obj1.val(d_value); } if (typeof mes != 'undefined') { obj1.siblings('.ft-err').html(errorHtml); } obj1.bind('click', function() { if($(this).val()==d_value || $(this).val()=='') { $(this).removeClass("d_val").val(""); $(this).siblings('.ft-err').hide(); $(obj2).siblings('.ft-err').hide(); } }); obj1.bind('focus', function() { if($(this).val()==d_value || $(this).val()=='') { $(this).removeClass("d_val").val(""); $(this).siblings('.ft-err').hide(); $(obj2).siblings('.ft-err').hide(); } }); obj1.bind('blur', function() { if($(this).val()=="") { $(this).addClass("d_val").val(d_value); if (obj2.hasClass('d_val')) { $(this).siblings('.ft-err').show(); $(obj2).siblings('.ft-err').show(); $(obj2).addClass('required'); } } else { $(this).siblings('.ft-err').hide(); $(obj2).siblings('.ft-err').hide(); $(obj2).removeClass('required'); } }); } }; var validateRequiredSelect = function(formId, inputName, mes) { obj = $('#' + formId + ' select[name="' + inputName + '"]:not(.combobox)'); if (obj.length!=0) { obj.addClass('required'); var errorHtml = mes; var d_value = obj.val(); obj.siblings('.ft-err').html(errorHtml); obj.bind('click', function() { if($(this).val()=='') { $(this).siblings('.ft-err').hide(); } }); obj.bind('blur', function() { if ($(this).val()=="") { $(this).siblings('.ft-err').show(); } else { $(this).siblings('.ft-err').hide(); } }); } }; var validateRequiredTextarea = function(formId, inputName, mes) { obj = $('#' + formId + ' textarea[name="' + inputName + '"]'); var errorHtml = mes; if (obj.length!=0) { obj.addClass('required'); obj.siblings('.ft-err').html(errorHtml); var d_value = obj.html(); if (obj.hasClass('d_val')) { obj.val(d_value); } obj.bind('click', function() { if($(this).val()==d_value || $(this).val()=='') { $(this).removeClass("d_val").val(""); $(this).siblings('.ft-err').hide(); } }); obj.bind('focus', function() { if($(this).val()==d_value || $(this).val()=='') { $(this).removeClass("d_val").val(""); $(this).siblings('.ft-err').hide(); } }); obj.bind('blur', function() { if($(this).val()=="") { $(this).addClass("d_val").val(d_value); $(this).siblings('.ft-err').show(); } else { $(this).siblings('.ft-err').hide(); } }); } }; var validateRequiredDatepicker = function(formId, inputName, mes) { var obj = $('#' + formId + ' input[name="' + inputName + '"].datepicker'); var errorHtml = mes; if (obj.length!=0 && obj.hasClass('d_val')) { obj.addClass('required'); var d_value = obj.val(); obj.siblings('.ft-err').html(errorHtml); obj.datepicker('destroy'); obj.datepicker({ minDate: obj.hasClass('curdate') ? 0 : null, showOn: "button", buttonImage: pathRoot + "/_assets/img/official/calendar-red.png", buttonImageOnly: true, onSelect: function(dateText, inst) { $(this).removeClass("d_val"); $(this).siblings('.ft-err').hide(); if ($(this).hasClass('fromdate')) { var index = $('.fromdate').index($(this)); var instance = $( this ).data( "datepicker" ), date = $.datepicker.parseDate( instance.settings.dateFormat || $.datepicker._defaults.dateFormat, dateText, instance.settings ); $('.todate').eq(index).datepicker( "option", 'minDate', date ); if($('.todate').eq(index).hasClass("d_val")) { $('.todate').eq(index).removeClass("d_val").val($(this).val()); $('.todate').eq(index).siblings('.ft-err').hide(); } } }, onClose: function(dateText, inst) { if($(this).val()=="" || $(this).val()==d_value) { $(this).addClass("d_val").val(d_value); $(this).siblings('.ft-err').show(); } else { $(this).siblings('.ft-err').hide(); } } }); obj.bind('focus', function() { $(this).datepicker('show'); if($(this).val()==d_value || $(this).val()=='') { $(this).removeClass("d_val").val(""); $(this).siblings('.ft-err').hide(); } }); } }; var validateRequiredCombobox = function(formId, inputName, mes) { obj = $('#' + formId + ' select[name="' + inputName + '"].combobox'); obj.parents('.ui-widget').next('.ft-err').html(mes); }; function def_val(obj) { if(obj.length!=0) { obj.each(function(){ var d_value = $(this).val()!='' ? $(this).val() : $(this).attr('title'); $(this).val(d_value); $(this).bind('focus', function() { if($(this).val()==d_value) { $(this).removeClass("d_val").val(""); } }); $(this).bind('blur', function() { if($(this).val()=="") { $(this).addClass("d_val").val(d_value); } }); }); } else { return false; } }