none
onchange nao funciona apos onkeypress no IE 8 RRS feed

  • Pergunta

  • Bom dia a todos.

    Tenho uma funcao em javascript permite somente a inclusao de numeros e virgula em um Textbox, essa funcao retorna true ou false de acordo com o que é digitado e funciona perfeitamente. Já nesse mesmo Textbox o onchange em conjunto com o onkeypress nao é disparado. Verifiquei q acontece porque a funcao no onkeypress retorna false (alterei a funcao para sempre retornar true e o onchange dispara).

    E isso acontece somente no IE8 (nao testei em outros IE's), FF, Chrome, Opera e Safari funciona sem problemas.

     

    Se alguem tiver uma luz, agradeco, pois ja pesquisei bastante no Google, etc e nada.

     

    Abraco a todos.

     

    P.s.: Observei agora q acontece tb pq minha funcao tem setTimeout (sem ele mesmo retornando false funciona ok). Segue o codigo para facilitar:

    function eDecimalAuto(e, obj) {
    
     objeto = obj;
    
     setTimeout("objeto.value = objeto.value.replace('.', ',');", 1);
    
     var whichCode = e.keyCode != null ? e.keyCode : e.which;
    
     if ((whichCode == 0) || (whichCode == 8))
      return true;
    
     keychar = String.fromCharCode(whichCode);
    
     if (keychar == '.' || keychar == ',') {
    
      if (obj.value == '')
       setTimeout("objeto.value = '0' + objeto.value;", 1);
      else if (obj.value.indexOf(',') != -1) 
       return false;
    
      return true;
    }

    quinta-feira, 10 de fevereiro de 2011 12:30

Todas as Respostas

  • Bom dia a todos.

    Tenho uma funcao em javascript permite somente a inclusao de numeros e virgula em um Textbox, essa funcao retorna true ou false de acordo com o que é digitado e funciona perfeitamente. Já nesse mesmo Textbox o onchange em conjunto com o onkeypress nao é disparado. Verifiquei q acontece porque a funcao no onkeypress retorna false (alterei a funcao para sempre retornar true e o onchange dispara).

    E isso acontece somente no IE8 (nao testei em outros IE's), FF, Chrome, Opera e Safari funciona sem problemas.

     

    Se alguem tiver uma luz, agradeco, pois ja pesquisei bastante no Google, etc e nada.

     

    Abraco a todos.

     

    P.s.: Observei agora q acontece tb pq minha funcao tem setTimeout (sem ele mesmo retornando false funciona ok). Segue o codigo para facilitar:

    function eDecimalAuto(e, obj) {
    
     objeto = obj;
    
     setTimeout("objeto.value = objeto.value.replace('.', ',');", 1);
    
     var whichCode = e.keyCode != null ? e.keyCode : e.which;
    
     if ((whichCode == 0) || (whichCode == 8))
      return true;
    
     keychar = String.fromCharCode(whichCode);
    
     if (keychar == '.' || keychar == ',') {
    
      if (obj.value == '')
       setTimeout("objeto.value = '0' + objeto.value;", 1);
      else if (obj.value.indexOf(',') != -1) 
       return false;
    
      return true;
    }
    


    quarta-feira, 16 de janeiro de 2013 14:01