Ver Mensaje Individual
  #11 (permalink)  
Antiguo 01/05/2012, 02:11
IXtremeLT
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 9 meses
Puntos: 32
Respuesta: Problemas con Crome

Hola Carlos, sucede que hay incompatibilidad en casi todo, te dejo el codigo arreglado y de una vez mejor optimizado.

Código HTML:
Ver original
  1. <label for="Nombre">Nombres:</label>
  2.       <input type="text" id="Nombre" name="Nombre" class="input-text" onkeypress="return validarLetras(event);" placeholder="Solo letras."  />

Código Javascript:
Ver original
  1. function validarLetras(event)
  2. {
  3.      var event  = window.event || event;
  4.      var key    = event.which || event.keyCode;
  5.      var char   = String.fromCharCode(key);
  6.  
  7.      if ( ! isNaN(char) ) {
  8.          return false;
  9.      }
  10. }

Primeramente es ideal usar onkeypress en tu caso ya que estas validando la tecla oprimida en ese momento y lo mejor es que sea antes de imprimirse en el input text, asi de facil: "onkeypress se ejecuta antes de onkeyup".

Dos, window.event suele ser nativo de IE, ahora casi todas las versiones de navegadores modernas lo soportan, para las que no hay que pasarlo como parametro al llamar a la funcion desde el
atributo, ej. onclick="a(event)".

Tres, event.keyCode si es soportado por todos los browsers pero el funcionamiento es distinto entre versiones, por ejemplo en IE te retorna el ascii de cualquier tecla
pero en Firefox te retorna solo el ascii de las teclas especiales, por ejemplo el event.keyCode de la tecla "A" te daria 65 en IE pero en Firefox 0, para ello hay que usar event.which

String.fromCharCode te devuelve el caracter del codigo ascii.

isNaN es una funcion nativa que te dice si el caracter No es un Numero, y al negarlo te devuelve true si es un numero por lo que retorna false y si te fijas en el onkeypres retorna el valor retornado por la funcion, asi que evita que la tecla sea presionada en caso de ser numero.
Lo mas correcto seria usar el event.preventDefault() o event.returnValue=false para IE, quienes se encargan de evitar el funcionamiento normal de un evento.

Placeholder es un atributo que te ahorra codigo encargado de mostrar un texto en caso de estar en blanco el value del elemento.

Saludos.