2010-10-06 36 views
3

我想捕獲文本框中的輸入字符,然後根據表格進行轉換,並將其作爲用戶類型放回到文本框中。javascript - 捕獲輸入和轉換字符

<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> 
+0

您可能已經注意到了一個旁註,但僅供將來參考:當您驗證或通過JavaScript確保某些字符集時,與未驗證相同。你應該把它當作對用戶的一種很好的服務,但絕不能防止某些人物被張貼。這樣的驗證應該始終伴隨着服務器端的驗證。 – berkes 2010-10-06 14:13:50

+0

是的,謝謝。 – robert 2010-10-06 14:15:54

回答

6

應該這樣做。 現在工作的地方插入符號,甚至當你複製/粘貼到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; 
} 

**蒂姆·唐斯評論後編輯**

+1

如果插入符號不在輸入文本的末尾,那麼這將不起作用。 – 2010-10-06 14:51:24

+0

好趕蒂姆。 – BGerrissen 2010-10-06 15:04:40

+0

很好的答案。謝謝! – robert 2010-10-06 15:37:43

0

當輸入值改變時,而不是按下按鍵時,可能會更好。否則,其他形式的輸入(粘貼值)將繞過此替換。

+0

更喜歡關鍵新聞事件,因爲用戶會更快地趕上。我不太擔心剪切和粘貼,因爲這主要用於黑莓設備。 – robert 2010-10-06 14:29:22

0

應該做的伎倆。現在,只要工作插入符,甚至當你複製/粘貼到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字符像öéáí等... 任何想法修復這個「泄漏」?