JavaScript - захват ввода и конвертировать символы

StackOverflow https://stackoverflow.com/questions/3873371

  •  28-09-2019
  •  | 
  •  

Вопрос

Я хочу захватить входные чашеры в текстовом поле, преобразовать тогда в соответствии с таблицей и положить их обратно в текстовое поле в качестве типов пользователей.

<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> 
Это было полезно?

Решение

Должен сделать трюк. Теперь работает везде, где Caret есть и даже когда вы копируете / вставьте WECZ в поле (если это имеет значение)

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

** Редактировать после пункта TIM Downs **

Другие советы

Возможно, лучше сделать это, когда значение изменяется на входе, а не при нажатии клавиши. В противном случае другие формы ввода (приливное значение) обойдут эту замену.

Должен сделать трюк. Теперь работает везде, где Caret есть и даже когда вы копируете / вставьте WECZ в поле (если это имеет значение)

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

Его работает хорошо, пока мы не использовали UTF-8 Chars, как Öéáí etc ... Любая идея для ремонта этой «утечки»?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top