Seguinte gente boa, segue o problema:
Estou validando os valores de meus inputs, e só após todos os campos estarem válidos, meu submit "enviar" fica habilitado e muda o botão.
até aí tudo bem... O problema é o tal do "perder o foco" no campo para validar, pois se meu input submit está desabilitado, o campo que preenchi anterior nunca perde o foco! deve haver um jeito de fazer o input text perder o foco automático (campo.blur()) desde que esteja pronto, EU ACHO... algo como um onKeyUp(), mas isso deverá atrapalhar o desempenho de meu site... Bem, a dúvida está lançada e aguardo uma resposta de quem está nessa área a muito mais tempo do que eu...
segue uma parte do código que estou falando:
Função que valida o telefone
var e = 0;
function validaFone(campo5){
var tel = campo5.value;
tel = tel.replace(/[() -]/gi,"");
if(tel == ""){
e = 0;
document.getElementById("erro_FONE").style.display = "none";
return false;
}
var ddd = tel.substr(0,2);
var dd = tel.substr(2,2);
document.getElementById("erro_FONE").style.display = "none";
if ((ddd < 10) || (dd == 00)){
if(document.getElementById("erro_FONE").style.display == "none") {
document.getElementById("erro_FONE").style.display = "inline";
}
e = 0;
campo5.value = '';
return false;
}
e = 1;
mostra();
}
Função que decide se o submit será habilitado
function mostra(){
if (e == 1){
document.formulario.botao.disabled = false;
document.getElementById("erro_Botao").style.display = "none";
document.getElementById("botao").style.backgroundImage = "url(Images/botao.png)";
}
else{
document.formulario.botao.disabled = true;
document.getElementById("erro_Botao").style.display = "inline";
document.getElementById("botao").style.backgroundImage = "url(Images/botaoNone.png)";
}
}
Parte do código HTML
...
<fieldset>
<legend>FONE</legend>
<input type="text" onBlur="validaFone(this)" onkeypress="mascara(this,telefone)" maxlength="14" />
<span id="erro_FONE" style="display:none;font-size:10px;color:#FF0000"> Fone Inválido</span>
</fieldset>
<label id="fieldBotao">
<input type="submit" id="botao" name="botao" value="" onMouseOut="mostra()" disabled="true" style="background-image:url(Images/botaoNone.png)" />
</label>
<p align="center"><span id="erro_Botao" style="display:none;font-size:10px;color:#0066CC">Preencha Todos os Campos</span></p>
...
Espero que tenha conseguido passar a vocês qual a minha dificuldade. Confesso que ao colocar o código, me pareceu meio confuso, entretanto a função JS chamada no onMouseOut não funciona, pois mesmo tentando perder o foco do input text, clicando no botão, este está desativado e o foco continua no input text, não validando o campo e não habilitando o botão. (se o usuário clicar no TAB, ou clicar fora o botão será habilitado).
Obrigado pela atenção!
[Editado 10 horas depois]
Bem, uma solução que estou usando é a de validar após o usuario liberar a tecla, contando se o tamanho do valor está de acordo com o esperado para data de nascimento e telefone.
function validaFone(campo5){
var tel = campo5.value;
tel = tel.replace(/[() -]/gi,"");
if(tel == ""){
e = 0;
document.getElementById("erro_FONE").style.display = "none";
return false;
}
if ((tel.length) < 10){
return false;
}
[...]
[...]
<input type="text" onkeyup="validaFone(this)" onkeypress="mascara(this,telefone)" maxlength="14" />
<span id="erro_FONE" style="display:none;font-size:10px;color:#FF0000"> Fone Inválido</span>
[...]
onKeyUp() está validando os campos sem precisar perder o foco, e libera o botão mesmo se o usuario não clicar no TAB
- Fórum WMO
- → Viewing Profile: Tópicos: Dinnamus
Community Stats
- Group Usuários
- Active Posts 5
- Profile Views 1571
- Member Title Novato no fórum
- Age 41 years old
- Birthday May 9, 1982
-
Sexo
Male
-
Localidade
Itambé - PE
Social Networks
-
Twitter
dinnamus
0
Neutral
User Tools
Friends
Dinnamus hasn't added any friends yet.
Latest Visitors
Topics I've Started
Validação E Foco Do Campo Vs Submit Desabilitado
18/09/2011, 07:48
Input:Focus Sem A Borda Colorida No Chrome
07/09/2011, 11:55
Aew gente boa! foi em alguns tópicos do WebMasters que consegui criar os inputs personalizados! ficou muito bom!
A questão é quando o input está no foco, pois aparece uma borda laranja própria dos campos.
com a adição de pseudo-classes (input:focus, select:focus, textarea:focus) consegui retirar a borda laranja nos navegadores Firefox e IE.
Pena que no Chrome (como eu conceituava bem este aqui...) estas pseudo-classes não fazem nenhum efeito.
estou usando este CSS:
input {
border-top-width: 0px;
border-right-width: 0px;
border-bottom-width: 0px;
border-left-width: 0px;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
width:260px;
height:28px;
background: none;
background-image: url(Images/form.png);
}
e aqui vai uns prints dos navegadores:
A questão é quando o input está no foco, pois aparece uma borda laranja própria dos campos.
com a adição de pseudo-classes (input:focus, select:focus, textarea:focus) consegui retirar a borda laranja nos navegadores Firefox e IE.
Pena que no Chrome (como eu conceituava bem este aqui...) estas pseudo-classes não fazem nenhum efeito.
estou usando este CSS:
input {
border-top-width: 0px;
border-right-width: 0px;
border-bottom-width: 0px;
border-left-width: 0px;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
width:260px;
height:28px;
background: none;
background-image: url(Images/form.png);
}
e aqui vai uns prints dos navegadores:
Retirar A Máscara Das Variáveis
30/08/2011, 12:24
Show de bola essas funções que colocam máscara nos inputs, porém, quando eu uso a função que valida o CPF, as máscaras impedem que o resultado seja correto. alguém poderia informar uma função javascript que armazena somente os números de uma variável?
- Fórum WMO
- → Viewing Profile: Tópicos: Dinnamus
- Privacy Policy
- Regras ·