Javascript - 按顺序处理按键?

时间:2014-04-17 23:53:35

标签: javascript

我有一个简单的" onKeyUp" Javascript例程应该处理将输入字段添加到输入字段以格式化电话号码,转向" 1234567890"进入" 123-456-7890"。但是,如果用户键入太快,例程显然没有触发,或者事件丢失,我不确定。但在这种情况下,破折号不会被插入。

有人可以建议修复此问题吗?这是例程:

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

1 个答案:

答案 0 :(得分: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);
});