Inquiridor
Função onfocus no firefox

Pergunta
-
Galera, estamos com um problema aqui, estamos usando asp.net vb 2.0 e em uma determinada tela estamos precisando usar a função onfocus de uma textbox, que no IE funciona perfeitamente, mas no firefox não esta funcionando...
alguém tem alguma idéia do que possa ser????
Help!!!!
Todas as Respostas
-
-
O problema é o seguinte:Tenho um webForm que tem um textbox que recebe o nº de uma inscrição imobiliária e realiza uma consulta.Deve ser feito uma checagem no que foi digitado, pois a consulta n poderá ser realizada se o usuário digitar um valor q tenho menos de dois digitos.Usei o script abaixo no IE e (claro) funciona perfeito, mas qdo roda no Firefox o script é 'engolido'.
function CheckLength()
{
if(document.getElementById('ctl00_ContentplaceHolder1_txtNumInscricao').value.length < 2){
alert("Dígito da inscrição é requerido!");
document.getElementById('ctl00_ContentplaceHolder1_txtNumInscricao').focus();
}
}
No codebehindo estava fazendo assim:
Me.txtNumInscricao.Attributes.Add("onblur","BLOCKED SCRIPTCheckLength();");
Depois de algumas pesquisas montei um script dentro do codebehind, onde algumas funções javascript funcionam no FF, mas outras não.
A solução, a baixo, seta o focu para o textbox que recebe o valor da inscrição, porém permite que eu clique no botão consultar e ai da pau na consulta!
Me.txtNumInscricao.Attributes.Add("onblur", "if(document.getElementById('ctl00_ContentplaceHolder1_txtNumInscricao').value.length < 2){ " & _
" alert('Dígito da inscrição é requerido!'); " & _
" globalvar = document.getElementById('ctl00_ContentplaceHolder1_txtNumInscricao'); " & _
" setTimeout(""globalvar.focus()"",250); " & _
" } ")
-
Lissandra, por favor tente colocar o script abaixo e veja se roda alguma coisa, pois seu código aparentemente esta correto, o que pode estar acontecendo é ele nao estar retornando true no if e assim nao executando nada, se puder testar com o código abaixo.
Code Blockfunction CheckLength()
{
var tamanho, retornoteste;
window.alert("Entrou na Funçao");
tamanho = document.getElementById("ctl00_ContentplaceHolder1_txtNumInscricao").value.length;
retornoteste = (document.getElementById("ctl00_ContentplaceHolder1_txtNumInscricao").value.length < 2);
alert("Tamanho: " + tamanho);
alert("Retorno (deve retornar True): " + retornoteste);
if(document.getElementById('ctl00_ContentplaceHolder1_txtNumInscricao').value.length < 2)
{
alert("Dígito da inscrição é requerido!");
document.getElementById('ctl00_ContentplaceHolder1_txtNumInscricao').focus();
}
}
Abraços
Estevam
-
-
-
Lissandra, peço desculpas por alguns comentários anteriores, fiz os testes sem a utilizaçao do focus, só testando o método onblur e onfocus, nao se é realmente o que acontece com voce mas refiz alguns testes e verifiquei que no IE quando se chama o método onblur e a funçao chamada no método faz o focus no mesmo campo ele entra tipo em loop infinito, ou seja, enquanto o usuário nao digitar o valor exato ele nao sai do campo (isso gera problemas até para fechar a janela rsrs).
No Firefox, acho que tentaram resolver o problema, quando voce chama uma funçao pelo onblur e a mesma retorna com o focus para o mesmo campo que esta chamando a funçao, ele automaticamente joga o focus para o próximo campo do formulário, e mesmo se voce tentar primeira dar um focus em outro campo e dar um focus de volta para o campo que esta chamando a funçao pelo onblur ele nao permite.
A gambiarra que da pra fazer pelos meus testes aqui, é se caso o usuário digitar um valor que nao seja o desejado, voce utilizar um campo hidden para receber um erro e jogar o focus para um outro campo, nesse outro campo no nétodo onfocus voce verifica se houve o erro, se houver envia ele de volta para o campo que é obrigatório.
Estou enviando o exemplo:
Code Block<html>
<head>
<title>teste</title>
<script>
function blur1()
{
if (document.getElementById("txt_Busca").value.length < 2)
{
document.getElementById("txt_Busca3").value = "erro";
document.getElementById("txt_Busca2").focus();
}
else
{
document.getElementById("txt_Busca3").value = "certo";
}
}function focus1()
{
if (document.getElementById("txt_Busca3").value == "erro")
{
document.getElementById("txt_Busca").focus();
}
}
</script>
</head><body>
<form name="form1" id="form1" action="teste2.html" method="post">
<input type="text" value="teste" name="txt_Busca" id="txt_Busca" onblur="blur1();"/><br />
<input type="text" value="teste2" name="txt_Busca2" id="txt_Busca2" onfocus="focus1();" /><br />
<input type="hidden" value="teste3" name="txt_Busca3" id="txt_Busca3" /><br />
</form></body>
</html>
Nao sei se é exatamente o erro que ocorre ai, mas aqui aconteceu isto, entao qualquer coisa poste novamente.
Abraços
Estevam
-
-
Ola lissandra,
tente fazer uma autenticaçao via javascript,mas no arquivo externo .jsCode Blockfunction Verificar()
{
var obj = document.FormTeste
if (obj.cliente.value == "")
{
alert("O Campo Cliente deve ser preenchido !");
obj.cliente.focus();
return false;
}
Dê uma olhada de assim funciona.ok?
Fico no aguardo. -