I want to restrict user input to positive numbers in an html form.
I know you can set min="0", however it is possible to bypass this by manually entering a negative number.
Is there any other way to solve this without writing a validation function?
This uses Javascript, but you don't have to write your own validation routine. Instead just check the
validity.valid
property. This will be true if and only if the input falls within the range.The following script will only allow numbers or a backspace to be entered into the input.
If you want to ensure default value, i.e min value, or any other value, this is working solution. This is also preventing to clear the input field. Same way you can set to it's max value as well.
type="number"
already solves allowing numbers only to be typed as the other answers here point out.Just for reference: with jQuery you can overwrite negative values on focusout with the following code:
This does not replace server side validation!
This is not possible without validating the value of the input.
Since it is a string representing the number there is no way to be sure that string may be representing numeric values or not.
The Permitted attributes will not give you the ability to validate the value of the number input control.
One way to do this with the help of JavaScript could look like this.
If you are planing on sending your data to a server make sure to validate the data on the server as well. Client side JavaScript can not ensure that the data that is being sent will be what you expect it to be.