web-dev-qa-db-fra.com

Entrée HTML pour les nombres entiers positifs uniquement (Type = nombre)

Je ne trouve pas le bon motif de regex pour cela, même s'il y a beaucoup de questions de ce genre.

Je ne veux pas que l'utilisateur puisse taper ou entrer

<td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" /></td>
  1. -1.0 (valeurs négatives)
  2. String Values ​​et n'importe quel caractère
  3. 1.0 (valeurs décimales) 
  4. Aucune limite de portée

Je veux seulement accepter des nombres entiers positifs

RESOLUpas besoin de regex, je ne savais pas ceci: D

<td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" onkeypress="return event.charCode >= 48 && event.charCode <= 57"</td> 
12
SCS

Pour autoriser toute entrée sauf numérique, vous pouvez utiliser

<input type="text" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 57" name="itemConsumption" />
                   ^------------....

<form id="mfrm">
<table>
    <tr>
        <td>Enter number only: <input type="text" name="itemConsumption" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 57" /></td>
        <td><input type="Submit"/></td>
    </tr>
</table>

Ici, la condition event.charCode == 8 || event.charCode == 0 || event.charCode == 13 gère le cas où les touches DELETE, BACKSPACE ou ENTER sont enfoncées (important pour Firefox, voir le commentaire de Mohit ci-dessous et le commentaire de datashaman lié à l'activation de la touche ENTRÉE). 

Le event.charCode >= 48 && event.charCode <= 57 signifie que seulement 0 (code décimal 48) et tous les autres chiffres jusqu'à 9 (code décimal 57) seront renvoyés. 

26
Wiktor Stribiżew

Pour autoriser uniquement les valeurs numériques, vous pouvez utiliser comme suit:

<td><input type="number" pattern="\d+" name="itemConsumption" /></td>
5
HAYMbl4

Vous pouvez utiliser type , min et oninput  

<input type="number" min="0" step="1" oninput="validity.valid||(value='');">

<form>
<label>Input with positive numbers only</label><br/><br/>
<input type="number" min="0" step="1" oninput="validity.valid||(value='');">
</form>

2
Nikhil Mahirrao

S'il s'agit de HTML5, essayez plutôt l'attribut min :

<input type="number" min="0">
2
Oleksii Trekhleb

Vous pouvez utiliser ce motif regex pour les nombres entiers [0-9] * ou\d * [0-9] est une plage que vous pouvez taper de 0 à 9 et * signifie ne pas attendre de nombre ou peut-être taper des nombres infinis 

0
Ashoke Kumar