0

I need to restrict/disable end-user to enter space in the input field or text-box field. Currently I am using this code but it's not working properly.

function keyPress(e) { 
        var e = window.event || e;
        var key = e.keyCode;
        //space pressed
         if (key == 32) { //space
         return;
         }
        }
Ankita salve
  • 13
  • 1
  • 6
  • 4
    Why don't you just use validation to tell the user that what they entered is incorrect? – VLAZ Apr 17 '19 at 10:43

5 Answers5

3

Try keydown instead of keypress.

function keyDown(e) { 
  var e = window.event || e;
  var key = e.keyCode;
  //space pressed
   if (key == 32) { //space
    e.preventDefault();
   }
         
}
<input type="text" onkeydown="keyDown(event)" />

Edit

If you want to prevent to insert pasted text that contains whitespace you could use the following code:

function keyDown(e) { 
    var e = window.event || e;
    var key = e.keyCode;
    //space pressed
    if (key == 32) { //space
        e.preventDefault();
    }
}

function checkWhitespace(event)
{
 var data = event.clipboardData.getData("text/plain");
    var isNullOrContainsWhitespace = (!data || data.length === 0 || /\s/g.test(data));
  
    if(isNullOrContainsWhitespace)
    {
     event.preventDefault(); 
    }
  
}
<input type="text" onkeydown="keyDown(event)" onpaste="checkWhitespace(event)" />
Recep Karadas
  • 669
  • 4
  • 10
  • Check out [MDN: keypress](https://developer.mozilla.org/en-US/docs/Web/Events/keypress) for further reading. – Recep Karadas Apr 17 '19 at 10:57
  • And what about pasting text? You can simply paste text with spacebars like "lorem ipsu" and this solution won't work. Better idea is to clear input by [removing spacebars](https://stackoverflow.com/questions/19873002/how-to-replace-all-spaces-in-a-string/19873010) – jacqbus Apr 17 '19 at 11:02
1

<!-- Javascript  -->
<!-- prevent space in text box by  -->
function RestrictSpace() {
  if (event.keyCode == 32) {
    return false;
  }
}

<!--preventing copy and pasting to text box-->
function preventcopypaste(event) {
  var data = event.clipboardData.getData("text/plain");
  var isNullOrContainsWhitespace = (!data || data.length === 0 || /\s/g.test(data));

  if (isNullOrContainsWhitespace) {
    event.preventDefault();
  }

}
<!-- HTML  -->
<input type="text" onkeypress="return RestrictSpace()" onpaste="preventcopypaste(event)" />
0

Try this,

function keyPress(e) { 
    var e = window.event || e;
    var key = e.keyCode;
    //space pressed
    if (key == 32) { //space
        return false;
    }
    return true;
}
M.Hemant
  • 2,345
  • 1
  • 9
  • 14
0

Try this code onkeypress event of textbox

<input type="text" onkeypress="keyDown()"/>

<script>
function keyDown(e) { 
  var e = window.event || e;
  var key = e.keyCode;
  //space pressed
   if (key == 32) { //space
    e.preventDefault();
   }
         
}
</script>
Abhishek
  • 972
  • 3
  • 12
  • 24
0
// Disable space in inputs
    const no_space_input = document.querySelectorAll('input.nospace');
    no_space_input.forEach(element => {
        element.addEventListener('keydown', (event) => {            
            if (event.keyCode === 32) {
                event.preventDefault();
                return false;
            }
        });
    });
Lee Taylor
  • 7,761
  • 16
  • 33
  • 49