javascriptwhitespacedetectionkeyeventpreventdefault

Prevent more than one space between words


I have a function that prevents people putting numbers or any symbol but letters onkeypress into a text box due to ongoing problems with data entry.

<td><input type="text" name="name" onkeypress="return isAlfa(event)"></td>

Now some staff for reasons unknown put two spaces between words at random times. So I need to prevent them putting more than one space between words. I want to do this in the same function, but it keeps breaking.

function isAlfa(evt) {
  evt = (evt || window.event);
  var charCode = (evt.which || evt.keyCode);

  if ((charCode > 32)
    && (charCode < 65 || charCode > 90)
    && (charCode < 97 || charCode > 122)
  ) {
    return false;
  }
  return true;
}

How can I prevent them entering more than one space between words?


Solution

  • may be try to use something like this. on your keypress event try to check the last value by using string substr method and if that gives you a space and current code is also a Space then prevent or do whatever you want to do with input.

    function checkstuff(event){
      if (event.target.value.substr(-1) === ' ' && event.code === 'Space') {
        console.log('space pressed in sequence');
      }
    }
    <input type='text' onkeypress="checkstuff(event)">