HTML5 input: min prevents steps any - html

Can a min / max value be specified when using steps="any" or steps="0.1"?
Testing
When an input of type="number" has a min value set; steps="any" no longer allows decimals.
This input has a VALID value
<input type="number" value="12.5" steps="any">
This input has an INVALID value
<input type="number" value="12.5" steps="any" min="0">
Example Fiddle

The correct attribute name is step, not steps. The misspelled attribute is ignored, causing the step to be defaulted to 1. So use step="any".

Related

minlength attribute doesn't seem to be working

Say I have the following HTML:
<form>
Fax #: <input type="number" name="fax" minlength="10" required />
<button>Print</button>
</form>
If I enter in "11" as the Fax # and hit "Print" the form submits without issue. I would like it to present some sort of error. If the minlength attribute doesn't do that then what exactly does the minlength attribute do?
I'm using Google Chrome 74..
The minlength attribute doesn't apply for input of type number. This is actually quite reasonable. Numbers don't have a length, text do. For reference, see The official documentation.
Using input type="number" for a fax field is semantically incorrect, anyway. You should use input type="text". Then you can limit its length by the maxlength or minlength attributes or even use the pattern one.
If you absolutely need to use number as input type and you need to limit the value to 10 digits, you can do it by using min and max attributes:
Fax #: <input type="number" name="fax" min="1000000000" max="9999999999" required />
Like I said, though, this is absolutely incorrect semantically.

Ensure between 7 and 10 digits at input field

How to ensure between 7 and 10 digits are entered using pattern attribute in HTML? I have following code:
<input type="number" name="Student" id="studID" required pattern="\d{7,10}" />
The number type of input elements does not support a pattern attribute:
See the MDN documentation in <input type="number">
In addition to the attributes commonly supported by all types, inputs of type number support these attributes:
Attribute Description
max The maximum value to accept for this input
min The minimum value to accept for this input
placeholder An example value to display inside the field when it's empty
readonly A Boolean attribute controlling whether or not the value is read-only
step A stepping interval to use when using up and down arrows to adjust the value, as well as for validation
<input type="text"> has the pattern attribute.
You could use the min and max attributes like so.
<input type="number" name="Student" id="studID" min="1000000" max="9999999999">
<input type="number" name="Student" id="studID" minlength="7" maxlength="10">
should solve the problem you're having
You can add pattern attribute like this:
<input type="number" name="Student" id="studID" required pattern="7-10" />

How can I specify the exact number of digits that an user have to insert into an input field?

I am pretty new in HTML and I have the following problem. Into a page I have an input tag like this:
<input id="codiceFiscaleEnte" class="form-control" name="numeroProtocollo" type="number" th:value="*{codiceFiscaleEnte}" required="required"></input>
and I have to do some validation on it.
So I know that the required="required" attribute means that the user have to insert a value for this field and that the type="number" specify that this value have to represent a number.
Can I specify in some way that this number has to be composed by exactly 11 digits? How can I do it using HTML attributes?
Use pattern:
<input type="text" name="numeroProtocollo" required pattern="[0-9]{11}">
It allows only numbers with a minimum and maximum length of 11
Test it:
https://jsfiddle.net/oegjdszx/1/
Use the pattern like this
<input pattern="[0-9]{5}">
Where 5 is the number of digits that you want.
<input type="number" min="10000000000" max="99999999999" required>
min and max attributes specify the smallest and largest valid values. An 11 digit number is a number between 10^10 and (10^11 - 1), so set min and max to those values

Firefox: input field number min max not working

I'm facing the issue for input field's attributes min and max values in Firefox (v_30.0) browser.
This works
<input name="year" type="number" placeholder="YYYY" required min="1" max="12"/>
But this does not
<input name="year" type="number" placeholder="YYYY" required min="1990" max="20014"/>
it displays 1 on input box and does not move further.
Firefox (unlike Chrome) seems to follow the HTML5 definition for stepping up the value of an input type=number element. When the value is not set, as it here isn’t initially, it is interpreted as 0, so the result of incrementing is 1. Since it is outside the range, it is an invalid value, and further stepping is not possible.
This means that input type=number is intended for use with quantities for which an initial value can be set (or the default initial value of 0 can be accepted). After all, stepping up and down is really the reason for using this element type, and it needs to start somewhere.
Consequently, there is not much point in using required for such an element, unless the implicit default of 0 is acceptable and within the bounds set.
If you still want to use input type=number, you need to set some initial value with the value attribute that is within the bounds. Technically, this means that the pattern attribute has no effect.
To read a required 4-digit number when no default value is set, optionally with a placeholder, you can use a text input field with suitable attributes (but you cannot express a range requirement in HTML, in any reasonable way, in this approach):
<input name="year" type="text" placeholder="YYYY"
size="4" maxlength="4" pattern="\d[4}" required
style="font-family: Consolas, monospace">
Just set the starting value and it will work
<input name="year" type="number" min="1990" max="2014" value="1990" required />
http://jsfiddle.net/ywq6dq93/
EDIT:
As another user previously pointed out, this will not show the placeholder but instead the starting value of 1990. In Chrome it works to not set the value and still show the placeholder and achieve the desired functionality, however it seems that in FF you would need to set the value by javascript when focusing on the input field, if you want to show a placeholder instead of a starting value.
Demo for this: http://jsfiddle.net/1pg5727f
<input type="number" step="1" min="1" name="product_qty" value="1" title="Qty" class="input-text" size="4" maxlength="10" pattern="\d*" required />
if you still looking for the answer you can use input type="number".
min max work if it set in that order:
1-name
2-maxlength
3-size
4-min
5-max
just copy it
<input name="X" maxlength="3" size="2" min="1" max="100" type="number" />

Static Input Violating MaxLength property of an input box

I have created an input box using <input type="text" name="username"> for user to input username, then i have fixed the length to 5 for some calculation.
<input type="text" name="username" maxlength="5">. but when i given the input as static text then it will accept any number of characters.
Setting max length to 5 means that the input box will hold only 5, then why it holds more than 5 letters when given like this?
<input type="text" name="username" maxlength="5" value="12345678910">
According to w3schools,
Maxlength eflects the maxlength HTML attribute, containing the maximum length
of text (in Unicode code points) that the value can be changed to. The
constraint is evaluated only when the value is changed
The key here is that it is only evaluated when the value is changed. You can set the value to anything when you're creating the element. The effect will take place after you change it. Try changing the input from your example, and you'll see that it does cap it at 5 characters.