2014-04-17 42 views
1

我有一個簡單的「的onkeyup」的Javascript是應該處理添加破折號輸入字段格式化電話號碼慣例,把「1234567890」到「123-456-7890」。但是,如果用戶鍵入的速度太快,程序顯然不會啓動,或者事件丟失,我不確定。但在這種情況下,破折號不會被插入。Javascript - 按順序處理按鍵?

任何人都可以提出一個解決這個問題嗎?這裏的例行:

function(event, field) { 
    // Don't add dashes if user pressed backspace 
    if (event.keyCode != 8) { 
     if (field.value.length == 3 || field.value.length == 7) { 
      field.value = field.value + "-"; 
     } 
    } 
}; 
+0

,如果你能提供一個jsbin或撥弄我會很高興去看看。 – bitoiu

+0

如果第三個字符是破折號怎麼辦? – tymeJV

+0

有一個叫做maskedInput的jQuery插件或者其他一些類似的東西,我之前曾經提出過。從我的工作原理來看,他們做出了改變,然後改變了cursros的位置,所以也許這就是失敗的一步? – Adam

回答

1

SOLUTION

var dashes = function(event, field) { 
    if (event.keyCode != 8) { 
    var arr = field.value.split(''), 
     l = arr.length; 
    if(l > 2 && arr[3] != "-") arr.splice(3, 0, "-"); 
    if(l > 6 && arr[7] != "-") arr.splice(7, 0, "-"); 
    field.value = arr.join(''); 
    } 
}; 

var input = document.getElementById('in'); 

input.addEventListener('keyup',function(event){ 
    dashes(event, input); 
}); 
+1

這工作很好。謝謝! – user3120173