/** * Função: submeter(acao, prefixo) * Data: 12/12/2008 * Descrição: Função utilizada para validar os campos obrigatórios de um formulário Foi criada no intuito de agiizar o desenvolvimento de formulários de pesquisa Exige que os campos possuam um prefixo passado por parametro e o prefixo deve possuir 4 caracteres Exige que o formulario possua o nome frm Trabalha validando o preenchimento dos campos onde há o prefixo passado e submete o frm em caso de sucesso, caso contrario alerta e muda a cor de fundo dos campos * Chamada: onClick="submeter('pesquisar','pesq');" * */ /** * Criado em: 04/03/2009 * * * Função. valida(form,acao,submete,obrigatorio); * * @param form = objeto forumlario que deseja validar; * @param acao = valor que deseja que seja setado no input de ação * @param submete = valor (true ou false) para dizer se o script vai submeter o formulario * @param obrigatorio = campo opcional que altera o default de 'nao obrigatorios' com o valor (_not) * para 'obrigatorios' com o valor passado * * * Script tem como funcionalidade validar todos os inputs do formulario * * - Compativel com: Firefox 3, Internet Explorer 7, Konqueror 3.5, Chrome 1.0, Opera 9 * * NOTAS IMPORTANTES * * - para o script identificar a acao do form, o input tipo hidden 'acao' deve possuir o um id com o prefixo do form * em que ele está, da seguinte maneira 'id_form'+'_acao'. Ex: ; * * - para o script identificar os blocos de checkboxes, os checkboxes devem estar dentro de um
identificado da seguinte forma: * o id do div deve ser composto de 'id_form'+_div_ckbox+'id_qualquer'. Ex:
* os checkboxes devem estar dentro do div da seguinte maneira: * Ex:
* * * *
* * - para o script identificar os blocos de radio, os radios devem estar dentro de um
identificado da seguinte forma: * o id do div deve ser composto de 'id_form'+_div_radio+'id_qualquer'. Ex:
* os checkboxes devem estar dentro do div da seguinte maneira: * Ex:
* * * *
* * * * */ function submeter(acao, prefixo) { var pode_enviar = true; var achou = false; for ( var i = 0; i < document.frm.elements.length; i++ ) { obj = document.frm.elements[i]; if (obj.name.substring(0,4) == prefixo && obj.getAttribute('obrigatorio') == 1) { if (obj.type == 'text' || obj.type == 'textarea' || obj.type == 'select') { obj.style.background = "#FFFFFF"; if (obj.value == '') { obj.style.background = "#FDF3D9"; pode_enviar = false; } } } } if (pode_enviar == true) { $id('acao').value = acao; $id('frm').submit(); } else { cria_msg_html('div_msg','Existem campos obrigatórios não preenchidos.'); return; } } /* funcao de validar */ function valida(form,acao,submete,obrigatorio){ /* declaração de variaveis */ var erro = 0; var x = 0 ; var debug = 1; ckbox_a_lista = new Array ; ckbox_a_div = new Array; ckbox_a_error = new Array; /* variavel que seta o sufixo para nao obrigatorio */ var n_obri = 'not_'; limpaCores(); / * alerta de erro se não tiver form informado */ if(form.length == 0){ alert('ERRO: form inválido informado'); return false; } for (i=0; i Existem campos obrigatórios não preenchidos!', '100%', '34', '0', '0'); alinhaDiv('mess'); } id_interval = setInterval("alinhaDiv('mess')",500); fade(0,'mess',80); return false; }else{ if(document.getElementById("mess")){ removeDiv('mess'); } / * alerta de erro se nao encontrar input de acao * / if(document.getElementById(form.id+'_acao').length == 0){ alert('ERRO: erro ao definir ação. Input '+form.id+'_acao não existe'); } document.getElementById(form.id+'_acao').value = acao; /* se o parametro for true é para submeter o form */ if(submete == true || submete == 1){ form.submit(); }else{ return true; } } } function diferencaEntreDatas(dataMaior,dataMenor) { Data = dataMaior.replace( " ", "" ); dia1 = Data.substring( 0, 2 ); dia1 = parseInt(dia1,10)+0; mes1 = Data.substring(3,5); mes1 = parseInt(mes1,10)-1; ano1 = Data.substring(6,10); ano1 = parseInt(ano1,10)+0; Data = dataMenor.replace( " ", "" ); dia2 = Data.substring( 0, 2 ); dia2 = parseInt(dia2,10)+0; mes2 = Data.substring(3,5); mes2 = parseInt(mes2,10)-1; ano2 = Data.substring(6,10); ano2 = parseInt(ano2,10)+0; return ( (Date.UTC(ano1,mes1,dia1,0,0,0)-Date.UTC(ano2,mes2,dia2,0,0,0)) / 86400000); } function validarPeriodo(dataInicial, dataFinal) { diferenca = diferencaEntreDatas(dataFinal.value,dataInicial.value); var array_tmp = dataInicial.value.split('/'); var dia_ini = array_tmp[0]; var mes_ini = array_tmp[1]; var ano_ini = parseInt(array_tmp[2]); if (dataFinal.value.length == 10) { array_tmp = dataFinal.value.split('/'); var dia_fim = array_tmp[0]; var mes_fim = array_tmp[1]; var ano_fim = parseInt(array_tmp[2]); // diferença de um ano var ano = diferencaEntreDatas(dataFinal.value,dia_fim+'/'+mes_fim+'/'+(ano_fim-1)); if((ano_ini!=ano_fim && ano_fimmes_fim) || (ano_ini==ano_fim && mes_ini==mes_fim && dia_ini>dia_fim)){ dataFinal.value=""; return false; } } return true; }