JavaScript - Comprobar input alfanumerico, funciona PC y Android NO! ????

 
Vista:

Comprobar input alfanumerico, funciona PC y Android NO! ????

Publicado por UnoDelMundo (1 intervención) el 11/07/2015 21:39:48
Buenas ,,

Tengo esta pequeña función para comprobar el caracter que se está introduciendo en un formulario html,

function isNumber(e) {
k = (document.all) ? e.keyCode : e.which;
if (k==8 || k==0) return true;
patron = /[a-z0-9-_]/;
n = String.fromCharCode(k);
return patron.test(n);
}

la función es llamada por evento (onkeypress) en la linea del input html :

<input id="username" name="username" placeholder="minusculas: letras, numeros y guiones - _" onkeypress="return isNumber(event);" tabindex="1" type="text" AUTOFOCUS required>

El caso es que funciona correctamente en el PC , pero si lo hacen desde un Android, no acepta los simbolos pero acepta las ÑñÇç y el €, ademas de las mayúsculas que en el pc no se escriben,

Alguien me puede decir donde está el fallo?

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vainas
Val: 95
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Comprobar input alfanumerico, funciona PC y Android NO! ????

Publicado por Vainas (258 intervenciones) el 13/07/2015 13:54:38
Buenas:

Yo creo que document.all es algo de Internet Explorer solamente... puedes mirar como lo hacen aqui: http://www.w3schools.com/jsref/event_key_keycode.asp para que te hagas una idea.

La otra cosa es que para obtener el caracter tienes que usar String.fromCharCode(codigo). Asi que todo el conjunto tendria que quedarte algo asi:

1
2
var codigo = e.which || e.keyCode;
var k = String.fromCharCode(codigo);

Espero que te sirva.

Saludos.

Actualizo: ahora veo que estabas usando fromCharCode, asi que nada...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas
Val: 95
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Comprobar input alfanumerico, funciona PC y Android NO! ????

Publicado por Vainas (258 intervenciones) el 13/07/2015 21:25:48
Buenas:

He comprobado que lo que te he dicho no responde a tu pregunta y he buscado un poco mas....

Javascript debe tener algun problema con los caracteres especiales que usamos por ejemplo en el español (á ñ ... y algunos otros idiomas como ç...). La unica solucion que he leido es que tendras que agregarlos tu mismo al patron para que se puedan usar. Sobre lo de mayusculas y minusculas puedes probar a usar \w en vez de [a-z0-9-_] ya que \w incluye [a-z0-9_] (tendras que agregar tambien el guion).

Si dices que en otro navegador te funciona (temo que sea IE) puede ser que tengan una implementacion un tanto diferente al standar de javascript.

Espero que esto si que ayude.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comprobar input alfanumerico, funciona PC y Android NO! ????

Publicado por UnoDelMundo (1 intervención) el 15/07/2015 19:01:22
Hola Vainas,

Realmente la compatibilidad para varios navegadores está en e.keyCode : e.which;

Selecciona e.which ó e.keyCode según lo soporte el navegador para obtener el codigo del caracter.

Sigo buscando porque funciona bien en Chrome, Opera, Firefox e Internet Explorer, pero ya digo que siempre que se haga desde un ordenador, si introduces desde el teclado android se cuelan las ñ todas las acentuadas, los simbolos de monedas y alguno más.

Si lo soluciono escribiré el codigo aquí , por si le hace falta a alguien más.

Saludos !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas
Val: 95
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Comprobar input alfanumerico, funciona PC y Android NO! ????

Publicado por Vainas (258 intervenciones) el 16/07/2015 00:56:15
Buenas:

Tu prueba lo que te he dicho. Primero cambia por esto:

1
var codigo = e.which || e.keyCode;

ya que document.all es de IE asi buscamos que funcione en todos.

La segunda parte es que pongas esto en el patron:

1
patron = /[\w\-ñç]/;

Lo del guion no lo tengo muy claro si es asi (lo he resaltado en negro para que lo quites sino funciona.

Espero q te sirva.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar