仅为正整数的HTML输入(类型=数字)

时间:2015-09-25 07:42:13

标签: html regex html5 validation

我找不到合适的正则表达式模式,即使这类问题很多。

我不希望用户能够输入或输入

<td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" /></td>
  1. -1.0(负值)
  2. 字符串值和任何字符
  3. 1.0(十进制值)
  4. 无范围限制
  5. 我只想接受积极的整数

    解决 不需要正则表达式,我不知道这个:D

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

10 个答案:

答案 0 :(得分:29)

要拨打除数字以外的任何输入,您可以使用

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

此处,event.charCode == 8 || event.charCode == 0 || event.charCode == 13条件处理按下DELETE,BACKSPACE或ENTER键的情况(对Firefox很重要,请参阅下面的Mohit's comment和与启用ENTER键相关的datashaman's comment)。

event.charCode >= 48 && event.charCode <= 57表示仅返回0(十进制代码48)和最多9(十进制代码57)的所有其他数字。

答案 1 :(得分:5)

要仅允许使用数字值,您可以按如下方式使用:

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

答案 2 :(得分:3)

如果是HTML5,那么您可以尝试min属性:

<input type="number" min="0">

答案 3 :(得分:2)

您可以使用类型 min oninput

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

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

答案 4 :(得分:2)

我尝试了许多不同的解决方案来实现这一目标,最后我想到了这个解决方案,它对我们来说是完美的。它可用于键入和复制/粘贴,但我找不到任何不需要的副作用。

<form>
    <input
        type="number"
        min="0"
        step="1"
        onfocus="this.previousValue = this.value"
        onkeydown="this.previousValue = this.value"
        oninput="validity.valid || (value = this.previousValue)"
    />
</form>

这类似于Nikhil Mahirrao的解决方案,但是它将导致无效的击键被简单地忽略,而不会清空输入。

答案 5 :(得分:0)

您可以将此正则表达式用于整数[0-9] *或\ d * [0-9]是您可以键入0到9的范围,*表示不期望任何数字或者您可以键入无限数字

答案 6 :(得分:0)

也许this jQuery Codepen snipet对某人会有帮助。 用于type =“ number”(不是“ text”):

<input class="js-input-absint" type="number" step="1" min="18"  max="150" name="age" value="50">

,只有[0-9]允许输入。在输入中将仅打印/粘贴具有最小-最大范围的数字[0-9](可选)。

一些说明:该代码在输入阶段仅显示数字,并且在输入无效数字值的情况下不会将值重置为“”(空),就像默认情况下对type =“ number”所做的那样。并且您不能将属性pattern =“ / ^ [0-9] * $ /”用作输入类型=“ number”。

var $inputAbsint = $('.js-input-absint');

if ($inputAbsint.length) {

  $(document).on('keypress', '.js-input-absint', function (event) {

    var allowed = /^[0-9]|Arrow(Left|Right)|Backspace|Home|End|Delete$/;
    return allowed.test(event.key);

  }).on('focusout paste', '.js-input-absint', function () {

    var $input = $(this);
    var defaultValue = this.defaultValue || $input.attr('min');
    // Important(!): Timeout for the updated value
    setTimeout(function () {
        var current = $input.val();
        var regexNumbers = new RegExp(/^[0-9]*$/, 'g');
        var isNumbersOnly = regexNumbers.test(current);
        // Clear wrong value (not numbers)
        if ((current === '' || !isNumbersOnly) && defaultValue.length) {
            $input.val(defaultValue);
            current = defaultValue;
        }
        // Min/Max
        var min = parseInt($input.attr('min'), 10);
        var max = parseInt($input.attr('max'), 10);
        var currentInt = parseInt(current, 10);
        if (!isNaN(min) && !isNaN(currentInt) && currentInt < min) {
            $input.val(min);
        }
        if (!isNaN(max) && !isNaN(currentInt) && currentInt > max) {
            $input.val(max);
        }
    }, 100);

  });

}

答案 7 :(得分:0)

您不能按键盘上的'-'按钮。

<!--HTML Code is below-->
<input type="text" name="value1" id="value1" class="form-control" required="required" onkeyup="keyCode(event)">

<!--JQuery Code is below-->
<script>
       $(document).ready(function() {
        $value1.on("keyup", function keyCode(event){
            var x = event.keyCode;
            if (x == 109 || x == 189) {
                event.preventDefault();
                alert ("You can't enter minus value !");
            }
        });
      });
</script>

'109'的键控代码表示键盘的数字减号按钮。键盘代码“ 189”表示字符按钮上方的减号按钮。

答案 8 :(得分:-1)

您可以尝试使用此正则表达式:

^(0|[1-9][0-9]*)$
甚至像阿维纳什所说的那样简单:

^\d+$

答案 9 :(得分:-1)

最好在输入字段中使用以下内容,它将阻止您输入除整数之外的任何其他字符。

只接受整数。

onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57"

请参阅demo