Consegui um scrip na internet pra validar e colocar máscara no campo data de nascimento de um formulário. Ele está funcionando perfeitamente, mas como o campo não é de preenchimento obrigatório gostaria que a validação somente fosse feita se o campo fosse preenchido, ou seja, se o campo estiver em branco a validação não será feita.
É possível fazer isso?
Outra coisa, além do campo data de nascimento tenho também outro campo data. A validação é feita ao clicar no botão "salvar" <input name="salvar" value="Salvar" type="submit" onClick="return validaData(cadastrodecandidatos.datanascimento);">(). Têm como validar os doi campos com o mesmo script?
Segue abaixo o script:
function validaData(str) { dia = (str.value.substring(0,2)); mes = (str.value.substring(3,5)); ano = (str.value.substring(6,10)); cons = true; // verifica se foram digitados números if (isNaN(dia) || isNaN(mes) || isNaN(ano)){ alert("Preencha a data somente com números."); str.value = ""; str.focus(); return false; } // verifica o dia valido para cada mes if ((dia < 01)||(dia < 01 || dia > 30) && (mes == 04 || mes == 06 || mes == 09 || mes == 11 ) || dia > 31) { cons = false; } // verifica se o mes e valido if (mes < 01 || mes > 12 ) { cons = false; } // verifica se e ano bissexto if (mes == 2 && ( dia < 01 || dia > 29 || ( dia > 28 && (parseInt(ano / 4) != ano / 4)))) { cons = false; } if (cons == false) { alert("A data inserida não é válida: " + str.value); str.value = ""; str.focus(); return false; } } // colocar no evento onKeyUp passando o objeto como parametro function formata(val) { var pass = val.value; var expr = /[0123456789]/; for(i=0; i<pass.length; i++){ // charAt -> retorna o caractere posicionado no índice especificado var lchar = val.value.charAt(i); var nchar = val.value.charAt(i+1); if(i==0){ // search -> retorna um valor inteiro, indicando a posição do inicio da primeira // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1 // instStr.search(expReg); if ((lchar.search(expr) != 0) || (lchar>3)){ val.value = ""; } }else if(i==1){ if(lchar.search(expr) != 0){ // substring(indice1,indice2) // indice1, indice2 -> será usado para delimitar a string var tst1 = val.value.substring(0,(i)); val.value = tst1; continue; } if ((nchar != '/') && (nchar != '')){ var tst1 = val.value.substring(0, (i)+1); if(nchar.search(expr) != 0) var tst2 = val.value.substring(i+2, pass.length); else var tst2 = val.value.substring(i+1, pass.length); val.value = tst1 + '/' + tst2; } }else if(i==4){ if(lchar.search(expr) != 0){ var tst1 = val.value.substring(0, (i)); val.value = tst1; continue; } if ((nchar != '/') && (nchar != '')){ var tst1 = val.value.substring(0, (i)+1); if(nchar.search(expr) != 0) var tst2 = val.value.substring(i+2, pass.length); else var tst2 = val.value.substring(i+1, pass.length); val.value = tst1 + '/' + tst2; } } if(i>=6){ if(lchar.search(expr) != 0) { var tst1 = val.value.substring(0, (i)); val.value = tst1; } } } if(pass.length>10) val.value = val.value.substring(0, 10); return true; } </script>
Desde já agradeço a ajuda de todos.