function validateElement(elem) { var tagValue=""; var fieldType=""; var javaType=""; var required=""; var idValue=""; var maxLen=0; var minLen=0; var defsLen=4; //definition field length var defs=""; var elem; var i=0; var ckbName=''; var compname=''; var acceptZero = ''; var retCkb=0; var minMax; compname = elem.name; fieldType = elem.type; idValue = elem.id + ""; if( (idValue.length < 1) || (compname == 'radioNif') || (compname == 'tipoPessoa') ) { return true; } defs = idValue.split("|"); // alterado para >= pois o 4 e 5 parametro são opcionais if(defs.length >= defsLen) { javaType = defs[0]; required = defs[1]; maxLen = defs[2]; if(maxLen.indexOf("-") >= 0) { minMax = maxLen.split("-"); minLen = minMax[0]; maxLen = minMax[1]; } if (defs.length>3) compname = defs[3]; if (defs.length>4) acceptZero = defs[4]; if(typeof(defs[4]) == 'undefined') acceptZero = 'S'; } else { alert("Definição de atributos do formulário inválida ["+compname+"]"); return false; } tagValue = getInputValue(elem); if(maxLen>0 && tagValue.length > maxLen) { alert('Tamanho máximo do campo excedido : '+compname); if(fieldType!="hidden" && !elem.disabled) elem.focus(); //hiddens can not be focused return false; } if((required=="S") && (minLen > 0) && (tagValue.length < minLen)) { alert('Tamanho minimo do campo não alcançado : '+compname); if(fieldType!="hidden" && !elem.disabled) elem.focus(); //hiddens can not be focused return false; } // Acrescentado por emurai em 19/04. Tratamento de checkboxes: basta 1 checkbox estar selecionado. if (required=="S" && fieldType=="checkbox") { retCkb= handleCheckbox(frm,i); if (retCkb==-100) { alert("Informe o campo "+compname+"!"); return false; } i= retCkb; // continua validacoes 'apos' os checkboxes return true; } if(required=="S" && trim(tagValue)=='') { //required alert("Informe o campo : "+compname); if(fieldType!="hidden" && !elem.disabled) elem.focus(); //hiddens can not be focused return false; } if(tagValue.length>0 && acceptZero=="N" && trim(tagValue)==0) { alert("Dado inválido : "+compname); if(fieldType!="hidden" && !elem.disabled) elem.focus(); //hiddens can not be focused return false; } if(tagValue.length>0) { //we got some data if(!validateByType(tagValue, javaType, compname, elem)) { if(fieldType!="hidden" && !elem.disabled) elem.focus(); //hiddens can not be focused return false; } } if(tagValue.length>0) { //we got some data if(!validateByType(tagValue, javaType, compname, elem)) { if (javaType != "L") { alert("Dado inválido : "+compname); } if(fieldType!="hidden" && !elem.disabled) elem.focus(); //hiddens can not be focused return false; } } return true; } function validateForm(frm) { var tagValue=""; var fieldType=""; var javaType=""; var required=""; var idValue=""; var maxLen=0; var minLen=0; var defsLen=4; //definition field length var defs=""; var elem; var i=0; var ckbName=''; var compname=''; var acceptZero = ''; var retCkb=0; var minMax; for(i=0; i < frm.length; i++) { elem = frm.elements[i]; compname = elem.name; fieldType = elem.type; idValue = elem.id + ""; if( (idValue.length < 1) || (compname == 'radioNif') || (compname == 'tipoPessoa') ) { continue; } defs = idValue.split("|"); // alterado para >= pois o 4 e 5 parametro são opcionais if(defs.length >= defsLen) { javaType = defs[0]; required = defs[1]; maxLen = defs[2]; if(maxLen.indexOf("-") >= 0) { minMax = maxLen.split("-"); minLen = minMax[0]; maxLen = minMax[1]; } if (defs.length>3) compname = defs[3]; if (defs.length>4) acceptZero = defs[4]; if(typeof(defs[4]) == 'undefined') acceptZero = 'S'; } else { alert("Definição de atributos do formulário inválida ["+compname+"]"); break;//return false; } tagValue = getInputValue(elem); if(maxLen>0 && tagValue.length > maxLen) { alert('Tamanho máximo do campo excedido : '+compname); if(fieldType!="hidden" && !elem.disabled) elem.focus(); //hiddens can not be focused return false; } // alert("required: "+required+" min: "+minLen+" tag : "+tagValue.length); //verifica o tamanho minino if((required=="S") && (minLen > 0) && (tagValue.length < minLen)) { alert('Tamanho minimo do campo não alcançado : '+compname); if(fieldType!="hidden" && !elem.disabled) elem.focus(); //hiddens can not be focused return false; } // Acrescentado por emurai em 19/04. Tratamento de checkboxes: basta 1 checkbox estar selecionado. if (required=="S" && fieldType=="checkbox") { retCkb= handleCheckbox(frm,i); if (retCkb==-100) { alert("Informe o campo "+compname+"!"); return false; } i= retCkb; // continua validacoes 'apos' os checkboxes continue; } if(required=="S" && trim(tagValue)=='') { //required alert("Informe o campo : "+compname); if(fieldType!="hidden" && !elem.disabled) elem.focus(); //hiddens can not be focused return false; } if(tagValue.length>0 && acceptZero=="N" && trim(tagValue)==0) { alert("Dado inválido : "+compname); if(fieldType!="hidden" && !elem.disabled) elem.focus(); //hiddens can not be focused return false; } if(tagValue.length>0) { //we got some data if(!validateByType(tagValue, javaType, compname, elem)) { if ((javaType != "K") && (javaType != "L") && (javaType != "M")) { alert('Dado inválido: ' + compname); } if(fieldType!="hidden" && !elem.disabled) elem.focus(); //hiddens can not be focused return false; } } //zero o valor de min caso existe if(minLen != 0 ) minLen = 0; } //for(i) return true; //form is valid } // Verifica se existe algum checkbox com 'checked' by emurai function handleCheckbox(frm,i) { var ckbName = frm.elements[i].name; var checks=frm.elements[ckbName]; var x = 0; // percorre todos os checkboxes para verificar se existe um selecionado (supoe que os checkboxes estao na sequencia) for (x=0; x < checks.length; x++) { if (checks[x].checked) { return i + checks.length - 1; } } return -100; } function filterSpecialChars(v) { var i=0,buf=''; if (v=='') return ''; for (i=0; i='a' && v.charAt(i)<='z') || (v.charAt(i)>='A' && v.charAt(i)<='Z') || (v.charAt(i)>='0' && v.charAt(i)<='9') || v.charAt(i)==' ' || v.charAt(i)=='.' || v.charAt(i)=='/' || v.charAt(i)=='@') buf += v.charAt(i); return buf; } function validateByType(tagValue, fieldType,compname, elem) { if(fieldType == "S") { //is String //elem.value = filterSpecialChars(tagValue); } else if(fieldType == "D") { //is Date if( !isDate(tagValue) ) return false; } else if(fieldType == "I") { //is Integer/Long if( !isInteger(tagValue) ) return false; } else if(fieldType == "F") { //is Float/Double if( !isNumeric(tagValue) ) return false; } else if(fieldType == "T") { //is Time if( !isTime(tagValue) ) return false; } else if(fieldType == "E") { //is E-mail if( !isEmail(tagValue) ) return false; } else if (fieldType == "P") { // CPF if( !verificarCPF(tagValue) ) return false; elem.value = extrairMascaraCPF(tagValue); } else if (fieldType == "J") { // CNPJ if( !verificarCGC(tagValue) ) return false; elem.value = extrairMascaraCGC(tagValue); } else if (fieldType == "R") { // RG return true; } else if (fieldType == "K") { if( !isDate(tagValue) ) { alert("Dado inválido : "+compname); return false; } if (isDateGreaterThanNow(tagValue)) { alert("Data fornecida maior que a data corrente : "+compname); return false; } } else if (fieldType == "L") { if( !isDate(tagValue) ) { alert("Dado inválido : "+compname); return false; } if (!isDateGreaterThanOrEqualNow(tagValue)) { alert("Data fornecida menor que a data corrente : "+compname); return false; } } else if (fieldType == "M") { if( !isDate("01/" + tagValue) ) { alert("Dado inválido : "+compname); return false; } } else if (fieldType == "Z") { // ZipCode if (!isZipCode(tagValue)) { return false; } } return true; } function isZipCode(s) { var reZip = /^[A-Za-z0-9]*$/; return reZip.test(s); } function imprimirFornecedor(codPessoaDetalhe, codOrigem){ var frm = document.forms[0]; var url = 'relatorioFornecedor.do?metodo=imprimir&relatorioHelper.codPessoaDetalhe=' + codPessoaDetalhe; url += '&relatorioHelper.origem=' + codOrigem; var x = screen.height - (screen.height /5); var l = (screen.width - 800) / 2; var t = (screen.height / 100); window.open(url, "", "height = " + x + ", width = 800, left=" + l + ", top = " + t + ', menubar=yes, scrollbars=yes'); }