Jump to content


Photo

Focus() Não Funciona No Firefox


  • Faça o login para participar
4 replies to this topic

#1 tpezzi

tpezzi

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre - RS

Posted 14/12/2006, 16:08

Galera,

É o seguinte, o meu problema está ocorrendo com vários campos então vou dar um exemplo. Tenho um campo do tipo cpf e quando a pessoa digita um cpf inválido e tira o foco do campo aparece uma mensagem de que o campo é inválido e o foco deve voltar para o campo, mas no FF o cursor vai para o próximo campo.
Criei um teste bem simples, olhem:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script language="javascript" type="text/javascript">
function foco(campo){
campo.focus();
}
</script>
</head>

<body>
Campo: <input type="text" size="12" name="test" onBlur="java script:alert('Campo incorreto');foco(this);">
Campo2: <input type="text" size="12" name="test2" onFocus="">
</body>
</html>

Vocês tem alguma idéia de como fazer isso fucnionar no FireFox?

Valeu!

Edição feita por: tpezzi, 14/12/2006, 16:16.


#2 marrentao

marrentao

    Turista

  • Usuários
  • 38 posts
  • Sexo:Não informado

Posted 15/12/2006, 08:33

a porcaria do firefox nao le duas funções em um mesmo evento...

por exemplo:

onlick="função1(); funcao2()"

nao vai funcionar...
então faça o seguinte:

<script>
funcao_x() {
funcao1();
funcao2();
}
</script>
onlick="funcao_x()"

valeu!!

#3 tpezzi

tpezzi

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre - RS

Posted 15/12/2006, 09:07

Isso também não funcionou.
Com a ajuda de um colega trabalho e finalmente consegui.
Segue o código:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script language="javascript" type="text/javascript">
function foco(campo){
alert('Campo incorreto');
globalvar = campo;
setTimeout("globalvar.focus()",250);
}
</script>
</head>

<body>
Campo: <input type="text" size="12" name="test" onBlur="java script:foco(this);">
Campo2: <input type="text" size="12" name="test2">
</body>
</html>

Valeu!!

#4 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 15/12/2006, 10:28

O comportamento do Firefox é o esperado. Como você deu alert, o foco saiu do campo e, claro o objeto this que você usa na segunda função não existe mais.

Você poderia guardar numa variável o this, exibir o alert e depois dar o focus com a variável guardada, tudo direto no código do onblur.

E sim, o Firefox suporta n funções no mesmo evento. ;)

Edição feita por: Klaus, 15/12/2006, 10:28.

Klaus Paiva
Conheça também: Taperás

#5 fnmoura

fnmoura

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado
  • Localidade:Rio de Janeiro

Posted 01/05/2007, 23:33

Caro Klauss,

Eu tentei fazer o que você disse, porém não obtive êxito. Veja como ficou meu código.

function CriticaNome(fobjeto)
{
	if (fobjeto.value != "")
		{
		mensagem1 = "Favor remover os espacos em branco do inicio e/ou fim do seu NOME.";
		mensagem2 = "Favor informar NOME e SOBRENOME.";
		prim = fobjeto.value.indexOf(" ");
		size = fobjeto.value.length;
		sobjeto=fobjeto;
		if (prim == 0)
			   {alert(mensagem1);sobjeto.focus();sobjeto.select();return false;}
		if (fobjeto.value.indexOf(" ") == -1)
	{alert(mensagem2);sobjeto.focus();sobjeto.select();return false;}
		if (fobjeto.value.indexOf(" ", size-1) != -1)
	{alert(mensagem1);sobjeto.focus();sobjeto.select();return false;}
		}
	return true;
}

No HTML eu chamei a função desta forma: (...) onblur="return CriticaNome(this);" (...)

Um abraço.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq