/* * Padronização das fun��es utils (via javascript). * * ATEN��O: Para adicionar novos m�todos, deve-se realizar testes nos browsers: IE, Firefox, Chrome * (e confirmar que a fun��o funciona corretamente em todos). * * DEPENDÊNCIAS: jquery-1.8.3.js, jquery-ui-1.9.2.custom.min.js * */ //####################### //## VARI�VEIS GLOBAIS ## //####################### var temp = ""; // #################### // ## M�todos Jquery ## // #################### $(window).load(function() { $.ajaxSetup({ scriptCharset : "utf-8", contentType : "application/x-www-form-urlencoded; charset=UTF-8" }); var foco = function() { var elementos = new Array(); if ($('.obrigatorio').length == 0) return false; $('.obrigatorio input[type=text], .obrigatorio textarea').not( ':disabled').each(function(i, e) { if ($(this).val().length == 0) { elementos.push($(this)); } }); $('.obrigatorio input.popupLink').each(function(i, e) { var hiddens = $(this).parent().find('input[type=hidden]'); var hiddenComValor = false; $(hiddens).each(function(i, e) { if ($(this).val().length > 0) { hiddenComValor = true; } }); if (hiddenComValor == false) { elementos.push($(this)); } }); $('.obrigatorio select').not(':disabled').each( function(i, e) { if ($(this).val() == '' || $(this).val() == undefined || $(this).val() == null) { elementos.push($(this)); } }); var radioGrupos = new Array(); $('.obrigatorio input[type=radio],.obrigatorio input[type=checkbox]') .each(function(i, e) { if ($.inArray($(this).attr('class'), radioGrupos) == -1) { radioGrupos.push($(this).attr('name')); } }); $.each(radioGrupos, function(i, e) { if (!$('input.' + e).is(':checked')) { elementos.push($('input' + e)); } }); $('.obrigatorio input,.obrigatorio textarea,.obrigatorio select').each( function(i, e) { var elem1 = $(this); var isFirst = false; $.each(elementos, function(i2, e2) { if (elem1.get(0) === $(this).get(0)) { isFirst = true; } }); if (isFirst == true) { //$(this).first().focus(); //bug if ($(this).is('select')) { //$(this).first().select(); //bug } return false; } }); }; foco(); $.fn.invisible = function() { return this.each(function() { $(this).css("visibility", "hidden"); }); }; $.fn.visible = function() { return this.each(function() { $(this).css("visibility", "visible"); }); }; $.fn.disable = function() { return this.each(function() { $(this).prop('disabled', true); }); }; $.fn.enable = function() { return this.each(function() { $(this).prop('disabled', false); }); }; $.fn.carregarCombo = function(options) { var settings = $.extend({ from : this, target : null, action : null }, options) $(settings.from).change( function() { $(settings.target).empty(); $(settings.target).append( ""); if ($(settings.from).val() != '') { $.post(settings.action, { 'id' : $(settings.from).val() }, function(data) { $.each(data, function(i, e) { var option = ""; $(settings.target).append(option) }); }, "JSON") } }).trigger('change'); return $(settings.from) }; $.fn.characterCounter = function(limit) { return this.filter("textarea, input:text").each(function() { var $this = $(this), checkCharacters = function(event) { if ($this.val().length > limit) { $this.val($this.val().substring(0, limit)); event.preventDefault(); event.stopPropagation(); } }; $this.keyup(function(event) { var keys = { BACKSPACE : 8, TAB : 9, LEFT : 37, UP : 38, RIGHT : 39, DOWN : 40 }; switch (event.which) { case keys.UP: case keys.DOWN: case keys.LEFT: case keys.RIGHT: case keys.TAB: break; default: checkCharacters(event); break; } }); $this.bind("paste cut", function(event) { setTimeout(function() { checkCharacters(event); event = null; }, 150); }); }); }; function ordenarSelect(campo, orderByValue) { var selectToSort = campo; var optionActual = selectToSort.val(); selectToSort.html(selectToSort.children('option').sort(function(a, b) { if (orderByValue) { return a.value === b.value ? 0 : a.value < b.value ? -1 : 1; } else { return a.text === b.text ? 0 : a.text < b.text ? -1 : 1; } })).val(optionActual); } $.fn.multiploSelect = function(options) { var settings = $.extend({ target : null, idAdd : null, idRemove : null, idAddAll : null, idRemoveAll : null, orderByValue : false }, options); var from = $(this); $('#' + settings.idAdd).click( function() { from.find('option').each( function(i, e) { if ($(e).is(':selected')) { $(settings.target).append( ''); $(e).remove(); ordenarSelect($(settings.target), settings.orderByValue); } }); }); $('#' + settings.idRemove).click( function() { $(settings.target).find('option') .each( function(i, e) { if ($(e).is(':selected')) { from .append(''); $(e).remove(); ordenarSelect(from, settings.orderByValue); } }); }); $('#' + settings.idRemoveAll).click( function() { $(settings.target).find('option').each( function(i, e) { from.append(''); $(e).remove(); ordenarSelect(from, settings.orderByValue); }); }); $('#' + settings.idAddAll).click( function() { from.find('option').each( function(i, e) { $(settings.target).append( ''); $(e).remove(); ordenarSelect($(settings.target), settings.orderByValue); }); }); $('form').submit(function() { $(settings.target + " option").each(function() { $(this).attr('selected', 'selected'); }); from.find('option').each(function() { $(this).attr('selected', 'selected'); }); }) }; $.fn.marcarTodos = function(options) { var settings = $.extend({ classTarget : null, botaoToggle : null }, options); if (settings.classTarget == null) { console.log("Erro: O atributo classTarget é obrigatório."); return false; } if (settings.classTarget.length <= 0) { console .log("Erro: O atributo classe definida em classTarget não existe."); return false; } var idClass = $(this).attr('id'); var checkMarcarTodos = $(this); if ($(settings.classTarget).length == 0) { $(this).hide(); } var desabilitarBotao = function() { if ($(settings.classTarget).not('#' + idClass).is(':checked')) { $(settings.botaoToggle).removeAttr("disabled"); $(settings.botaoToggle).removeClass("form-button-disabled") .addClass("form-button"); } else { $(settings.botaoToggle).attr("disabled", "disabled"); $(settings.botaoToggle).removeClass("form-button").addClass( "form-button-disabled"); } }; if ($(settings.classTarget + ':checked').length == $(settings.classTarget).length) { checkMarcarTodos.attr('checked', 'checked'); } else { checkMarcarTodos.removeAttr('checked'); } checkMarcarTodos .change(function() { if ($(this).is(':checked')) { $(settings.classTarget).not(':disabled').attr( 'checked', 'checked') $(settings.classTarget).not(':disabled').parent() .parent().addClass('active'); } else { $(settings.classTarget).removeAttr('checked'); $(settings.classTarget).parent().parent().removeClass( 'active'); } desabilitarBotao(); }); $(settings.classTarget) .change( function() { if ($(settings.classTarget + ':checked').not( '#' + idClass).length == $( settings.classTarget).not('#' + idClass).length) { checkMarcarTodos.attr('checked', 'checked'); } else { checkMarcarTodos.removeAttr('checked'); } desabilitarBotao(); }).trigger('change'); }; $.fn.toScroll = function() { return this.each(function() { $('html, body').animate({ scrollTop : $(this).offset().top }, 1000); }); }; $.fn.verificaCheck = function() { if ($(this).is(':checked')) { return true; } return false; }; $.fn.getRadioCheck = function() { var radioCheck = null; $(this).each(function(i, e) { if ($(this).is(':checked')) { radioCheck = this; } }); return radioCheck; }; $.fn.apenasNumerosSemCaracteres = function() { return this.each(function() { $(this).keypress(function(e) { var keyCode = e.keyCode || 0; var charCode = e.charCode || 0; return (keyCode == 8 || // backspace keyCode == 9 || // tab keyCode == 46 || // delete (keyCode >= 37 && keyCode <= 40) || // setas (charCode >= 48 && charCode <= 57)); // 0 - 9 }); }); }; }); // ############# // ## FUNÇÕES ## // ############# /** * Esta função retorna uma referência do elemento pai que contenha a tagPai e o * idPai quando este for informado. */ function getElementoPai(elementFilho, tagPai, idPai) { var elementoPai = $(elementFilho) .parents() .map( function() { if ((this.tagName == tagPai) && (($(this).attr('id').indexOf(idPai) > -1) || (typeof (idPai) == "undefined"))) { return this; } }).get(0); return elementoPai; } function selecionarLinha() { $('.table-grid tbody tr').click(function(e){ if ($(e.toElement).attr('type') == 'radio') { $('.table-grid tbody tr').removeClass('active'); $(e.toElement).closest('tr').addClass('active'); } else if ($(e.toElement).attr('type') == 'checkbox') { if ($(e.toElement).is(':checked')) { $(e.toElement).closest('tr').addClass('active'); } else { $('.table-grid tbody tr').removeClass('active'); } } else { if($(this).eq(0).has("input[type='radio']" ).length > 0) { var radio = $(this).find("input[type='radio']"); if (!radio.prop("checked") && !radio.prop("disabled") ) { $('.table-grid tbody tr').each(function(){ $(this).removeClass('active'); }); radio.prop("checked", true); radio.trigger("change"); $(this).addClass('active'); } } if($(this).eq(0).has("input[type='checkbox']").length > 0) { var checkbox = $(this).find("input[type='checkbox']") checkbox.prop("checked", !$(this).find('input[type=checkbox]').prop("checked")); checkbox.trigger('change') if($(this).find('input[type=checkbox]').prop("checked")) { $(this).addClass('active'); }else{ $(this).removeClass('active'); } } } }); } function bloquearBrowser() { $("#bloquerBrowser").show(); } function gerarAreaMsg() { var divMsg = $("
"); var ul = $('