Ver Mensaje Individual
  #8 (permalink)  
Antiguo 19/02/2013, 13:50
sairam2188
 
Fecha de Ingreso: diciembre-2012
Mensajes: 21
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Problema al sobrescribir en campo text de HTML

Tiempo sin pasar por acá, gracias por sus respuesta. Todavía sigo con el problema, me explicare un poco mejor a ver si me entienden:

Tengo una tabla en HTML con varias celdas que contienen cajas de texto (con valores extraídos de una base de datos), es decir, una matriz. Al momento de editar cualquier caja y pulsar la tecla TAB se produce el evento "onKeyPress" el cual llama una funcion javascript que a su vez valida si el texto ingresado fue un numero decimal. Luego de pulsar TAB se dirige a la siguiente caja de la fila pero el problema es que tengo que presionar la tecla "BACKSPACE" para borrar el texto que estaba en esa caja y colocar el nuevo, lo cual es bastante molesto. Aquí el ejemplo:

Código HTML:
Ver original
  1. <td><input class="EstiloEstandar" name="clase" type="text" size="5" id="clase" value="<?php echo $row[0];?>"/></td>
  2.        <td class="nombre_bd"  <?php echo $sItemRowClass; ?>><input class="EstiloEstandar3" onClick="editandoFila(this.form);" onKeyPress="return soloNumerosDouble(this)" name="t2012" type="text" size="5" id="t2012" value="<?php echo $row[6]; ?>"/></td>
  3.        <td><input class="EstiloEstandar" onKeyPress="return soloNumerosDouble(this)" name="t2011" type="text" size="5" id="t2011" value="<?php echo $row[1]; ?>"/></td>
  4.        <td><input class="EstiloEstandar" onKeyPress="return soloNumerosDouble(this)" name="t2010" type="text" size="5" id="t2010" value="<?php echo $row[2]; ?>"/></td>

Cuando quito el evento "onKeyPress" funciona sin problemas. Les dejo también el código javascript:

Código Javascript:
Ver original
  1. function soloNumerosDouble (objeto){
  2.         var valorCampo;
  3.         var evento_key = window.event.keyCode;
  4.         var numPosPunto = 0;
  5.         var strParteEntera = "";
  6.         var strParteDecimal = "";
  7.         var NUM_DECIMALES = 2;
  8.  
  9.         switch (evento_key){
  10.             case 48:
  11.             case 49:
  12.             case 50:
  13.             case 51:
  14.             case 52:
  15.             case 53:
  16.             case 54:
  17.             case 55:
  18.             case 56:
  19.             case 57:
  20.             case 46:
  21.         break;
  22.         default:
  23.         window.event.keyCode = 0;
  24.         return false;
  25.         }
  26.  
  27.         valorCampo = objeto.value;
  28.         if (evento_key == 46)
  29.         if (valorCampo.indexOf(".") != -1){
  30.             window.event.keyCode = 0;
  31.             return false;
  32.         }
  33.         /* Sólo puede teclear el número de decimales indicado en NUM_DECIMALES */
  34.         if ((numPosPunto = valorCampo.indexOf(".")) != -1){
  35.             strParteEntera = valorCampo.substr(0,(numPosPunto - 1));
  36.             strParteDecimal = valorCampo.substr((numPosPunto + 1), valorCampo.length)
  37.         if (strParteDecimal.length > (NUM_DECIMALES - 1)){
  38.             window.event.keyCode = 0;
  39.             return false;
  40.         }
  41.         }
  42.         return true;
  43.     }