Ensure between 7 and 10 digits at input field - html

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" />

Related

Maxlength for input type number

I have a number input field in HTML.
<input type="number" value="0">
and I'd like for the user to not be able to type more than five characters into the textbox.
I've used the maxlength attribute before when the type is set to text, but that doesn't work with the number attribute. Is there a relatively simple solution (inline HTML is preferred) to overcome this and limit the number of characters?
Thanks.
If you want a maximum of 5 digits in the number, you can use the largest 5 digit number and set that as the max attribute for the input:
<input type="number" max="99999" />
The above will only maximize the number to 99999, but will not disallow input of more than 5 characters. This can't be done with HTML alone.
It can, though, be done with JavaScript. For example:
<input oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
type="number"
maxlength="5"
/>
All the code above does is, oninput, it checks the number of characters in the input, and if that is exceeding the number of characters specified in maxlength, it deletes the character.
Source: maxlength ignored for input type="number" in Chrome

how to make the pattern to work with input number?

This is my first time using the pattern attribute. The following code is inside a <form> tag:
<input type="number" name="" placeholder="Number" pattern=".{12,13}" required>
I expect the pattern to make the number has minimal of 12 numbers and a max of 13 numbers. However, I can still submit the form with less than 12 numbers.
You can't use the pattern attribute on inputs of type number:
<input type="number"> elements do not support use of the pattern
attribute for making entered values conform to a specific regex
pattern. The rationale for this is that number inputs won't be valid
if they contain anything except numbers, and you can constrain the
minimum and maximum number of valid digits using the min and max
attributes
- MDN
As explained on MDN, you can use the min and max attributes to specify your domain:
<form>
<input type="number" name="number" placeholder="Number" min="100000000000" max="9999999999999" required />
<input type="submit" />
</form>
Alternatively, you can use an input type of text (which does allow pattern), and match for digits (\d):
<form>
<input type="text" name="number" placeholder="Number" pattern="\d{12,13}" inputmode="numeric" title="Your number must be 12-13 digits long" required />
<input type="submit" />
</form>

HTML5 input: min prevents steps any

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".

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" />

Styling HTML5 input type number

I'm writing a form in HTML5. One of the inputs is type=number. I want the input to only show 2 digits but it seems to default to showing at least 5 digits, which takes up extra space. I've tried adding size="2" attribute, with no effect.
This the tag i'm using:
<input type="number" name="numericInput" size="2" min="0" max="18" value="0" />
What am I missing?
HTML5 number input doesn't have styles attributes like width or size, but you can style it easily with CSS.
input[type="number"] {
width:50px;
}
I have been looking for the same solution and this worked for me...add an inline css tag to control the width of the input.
For example:
<input type="number" min="1" max="5" style="width: 2em;">
Combined with the min and max attributes you can control the width of the input.
Unfortunately in HTML 5 the 'pattern' attribute is linked to only 4-5 attributes. However if you are willing to use a "text" field instead and convert to number later, this might help you;
This limits an input from 1 character (numberic) to 3.
<input name=quantity type=text pattern='[0-9]{1,3}'>
The CSS basically allows for confirmation with an "Thumbs up" or "Down".
Example 1
Example 2
There are only 4 specific atrributes:
value - Value is the default value of the input box when a page is first loaded. This is a common attribute for element regardless which type you are using.
min - Obviously, the minimum value you of the number. I should have specified minimum value to 0 for my demo up there as a negative number doesn't make sense for number of movie watched in a week.
max - Apprently, this represents the biggest number of the number input.
step - Step scale factor, default value is 1 if this attribute is not specified.
So you cannot control length of what user type by keyword. But the implementation of browsers may change.
Also you can replace size attribute by a style attribute:
<input type="number" name="numericInput" style="width: 50px;" min="0" max="18" value="0" />
There is a way:
<input type="number" min="0" max="100" step="5"/>
<input type="number" name="numericInput" size="2" min="0" maxlength="2" value="0" />