Question

Je veux saisir les caractères de capture dans une zone de texte convertissons ensuite selon une table et les remettre dans la boîte de texte types d'utilisateurs.

<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> 
Était-ce utile?

La solution

devrait faire l'affaire. Maintenant, fonctionne partout où caret est et même lorsque vous copiez / collez WECZ dans le champ (si cela importe)

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;
}

** Modifier après commentaire Tim Downs **

Autres conseils

Il pourrait être préférable de le faire lorsque les changements de valeur dans l'entrée, plutôt que lorsque la touche est enfoncée. Dans le cas contraire, d'autres formes d'entrée (valeur coller) contournera cette substitution.

devrait faire l'affaire. Maintenant, fonctionne partout où caret est et même lorsque vous copiez / collez WECZ dans le champ (si cela importe)

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;
}

son bon fonctionnement jusqu'à ce que nous n'avons pas utilisé caractères UTF-8 comme öéáí etc ... toute idée de réparer cette « fuite »?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top