user3120173
user3120173

Reputation: 1788

Javascript - handling keypresses in order?

I have a simple "onKeyUp" Javascript routine that is supposed to handle adding dashes to an input field to format a phone number, turning "1234567890" into "123-456-7890". However, if the user types too fast the routine apparently doesn't fire, or the event gets lost, I'm not sure. But in that case, the dashes don't get inserted.

Can anyone suggest a fix for this? Here's the routine:

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

Upvotes: 1

Views: 50

Answers (1)

rafaelcastrocouto
rafaelcastrocouto

Reputation: 12161

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

Upvotes: 1

Related Questions