Pregunta

Quiero caracteres de entrada de captura de cuadro de texto, convertir a continuación, de acuerdo a una tabla y poner de nuevo en la caja de texto como los tipos de usuario.

<form id='myForm'>

Enter phone number:<input type="text" id='idMyText' name="myText" onKeyUp="alphaToNum(this.value)">
</form>




<script>
// on each keypress in input box, I want to capture key pressed,
// determine if key pressed belong to group of identified characters
// if, so then convert to specified numeric equivalent and return character 
// to text box.
// This mapping corresponds to numeric characters on blackberry device.
// Normally user has to press alt+letter to get numbers. This will provide
// quicker access to numeric characters on for numeric fields

function alphaToNum(e) {
 x = e;
 x = (x.replace(/W/, "1"));
 x = (x.replace(/E/, "2"));
 x = (x.replace(/R/, "3"));
 x = (x.replace(/S/, "4"));
 x = (x.replace(/D/, "5"));
 x = (x.replace(/F/, "6"));
 x = (x.replace(/Z/, "7"));
 x = (x.replace(/X/, "8"));
 x = (x.replace(/C/, "9")); 
 document.getElementById('idMyText').value = x; 
}

</script> 
¿Fue útil?

Solución

debe hacer el truco. Ahora funciona siempre que sea símbolo de intercalación es e incluso al copiar / pegar WECZ en el campo (si lo que importa)

var conversionMap = {W:1,E:2,R:3,S:4,D:5,F:6,Z:7,X:8,C:9};
function alphaToNum(){
    var field = document.getElementById('idMyText');
    var value = field.value.split('');
    var i = 0, len = value.length;

    for(i;i<len;i++){
        if (conversionMap[value[i]]) {
            value[i] = conversionMap[value[i]];
        }
    }
    field.value = value.join('');
    // prevent memory leak.
    field = null;
}

** Edición después comentario Tim Downs **

Otros consejos

Podría ser mejor hacer esto cuando cambia el valor de la entrada, en lugar de cuando se pulsa la tecla. De lo contrario, otras formas de entrada (valor pegar) pasará por alto esta sustitución.

debe hacer el truco. Ahora funciona siempre que sea símbolo de intercalación es e incluso al copiar / pegar WECZ en el campo (si lo que importa)

var conversionMap = {W:1,E:2,R:3,S:4,D:5,F:6,Z:7,X:8,C:9};
function alphaToNum(){
    var field = document.getElementById('idMyText');
    var value = field.value.split('');
    var i = 0, len = value.length;

    for(i;i<len;i++){
        if (conversionMap[value[i]]) {
            value[i] = conversionMap[value[i]];
        }
    }
    field.value = value.join('');
    // prevent memory leak.
    field = null;
}

su buen trabajo hasta que no usamos UTF-8 caracteres como öéáí etc ... alguna idea para la reparación de esta "fuga"?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top