开发者

Help me optimize a regular expression

Help me optimize a regular expression

<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(/w/, "1"));
    x = (x.replace(/E/, "2"));
    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> 


You could use the /i modifier so /W/i will match both w and W (etc.). But all in all this looks more like a job for a translation table - you're only substituting single letters, so regular expressions are a bit overkill for this.


This worked for me... answered in another thread.. thanks!

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

var conversionMap = {W:1,E:2,R:3,S:4,D:5,F:6,Z:7,X:8,C:9,
                     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;
    var chr = value[value.length-1];
    if(conversionMap[chr]) {
        field.value = value.substr(0,value.length-1) + conversionMap[chr];
    }
    // prevent memory leak.
    field = null;
}

</script> 
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜