none
Função onfocus no firefox RRS feed

  • 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!!!!

    terça-feira, 13 de novembro de 2007 12:14

Todas as Respostas

  • Lissandra envia o código para darmos uma olhada, pois o evento em si do onfocus funciona perfeitamente nos dois navedores.

     

    Abraços

     

    Estevam

    terça-feira, 13 de novembro de 2007 12:33
  • 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); " & _

    " } ")


    terça-feira, 13 de novembro de 2007 12:37
  • 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 Block

    function 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

    terça-feira, 13 de novembro de 2007 12:58
  • Olá Luiz, infelizmente, aqui não deu certo!  Sad
     []'s
    Lissandra
    terça-feira, 13 de novembro de 2007 17:48
  • Mesmo se voce criar uma funçaozinha básica ele nao abre, tipo:

     

    function teste()

    {

    alert("teste");

    }

     

     

    Qual versao voce esta utilizando do firefox?

    Testei aqui na versao 2.0.0.1

     


    Abraços

     

    Estevam

    terça-feira, 13 de novembro de 2007 18:36
  • 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

    terça-feira, 13 de novembro de 2007 19:50
  • Valeu Estevam! vamos testar aqui e te dou um retorno!
    abraços
    Lissandra
    quarta-feira, 14 de novembro de 2007 20:10
  • Ola lissandra,

    tente fazer uma autenticaçao via javascript,mas no arquivo externo .js
    Code Block

    function 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.

    quinta-feira, 15 de novembro de 2007 01:10
  • Ok Eduardo! Vou olhar! Valeu!!!
    terça-feira, 20 de novembro de 2007 13:06