El valor del campo de entrada actualizado no se muestra en Webkit

Este problema me tiene absolutamente perplejo, así que agradecería cualquier idea.

Estoy tratando de crear una máscara de entrada en javascript. La entrada debe tener el formato AA1111 (donde A=letras mayúsculas y 1=números). Este sitio está diseñado para ser utilizado en un navegador Blackberry (OS6 Webkit).

Estoy activando un javascript con el evento onkeyup que reescribirá el contenido de la entrada.

<script>
function checkInput(x) {

    var y = document.getElementById(x).value;
    var c = y.slice(-1);
    var n = "";
    if (y.length < 3) n = c.toUpperCase();
    else if (y.length < 7) n = convertToNum(c.toUpperCase());

    document.getElementById(x).value = y.slice(0, y.length - 1) + n;
}

Input:<input  type="text" id="search" class="big" OnKeyUp="checkInput(this.id);" autofocus="true" />

En Firefox e IE esto funciona como se esperaba, pero en Blackberry (y también en Chrome) el campo de entrada no funciona. siempre actualizarse con las letras y números correctos. Parece funcionar en la primera carga y luego se detiene después de la primera actualización. Inspeccionar el DOM cuando no funciona muestra que el atributo .value is actualizado correctamente, sin embargo, esto no se muestra en la ventana del navegador.

He puesto un ejemplo aquí http://aspspider.info/jessop para ilustrar lo que estoy tratando de hacer. Si prueba esto en un navegador webkit (¡idealmente en un OS6 Blackberry!) Entonces, con suerte, verá mi problema.

¿Es esto un error en Webkit o algo que estoy haciendo mal? ¿Alguna idea de una solución?

Muchas gracias.

preguntado el 03 de mayo de 12 a las 16:05

No puedo probar su ejemplo en una mora, pero si puedo sugerir una ruta alternativa para resolver su problema, creo que debería capturar onkeydown (y no onkeyup), que sucede antes de que aparezca el carácter en el campo de entrada. Luego, debe prevenirDefault () en su objeto de evento y agregar el carácter escrito o convertir char-to-number al final del valor de entrada (no es necesario cortar aquí). Como ventaja adicional, no aparecerán ni desaparecerán caracteres en su entrada. Además, probé su ejemplo en Chrome y parece funcionar bien, lo que indica que el webkit puede no ser el problema. -

También tiene otro problema con su código actual, escribir dos caracteres muy rápido mantendrá el primero, incluso si no debería estar allí. Además, algunas letras se transforman en números cuando deberían ser números (letras: wersdfxc) -

Gracias Marcelo, lo probaré mañana y publicaré con el resultado. DangerMonkey: las letras que se transforman en números permiten al usuario ingresar los números en el teclado de Blackberry sin tener que usar Alt para obtener los números (¡si eso tiene sentido!). Por ejemplo, si el usuario ingresa W cuando se espera un número, eso se transformará en 1 (que comparte la clave en la zarzamora). -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.