首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >html5 number类型,仅接受正整数

html5 number类型,仅接受正整数
EN

Stack Overflow用户
提问于 2015-12-10 20:41:54
回答 4查看 9.8K关注 0票数 3

我使用的是一个带有html5数字类型输入的angular应用程序。我试图将输入限制为只接受正整数,而不接受小数、浮点数。

我尝试使用一些模式和step=1最小、最大值,但似乎不起作用。

请提个建议。

编辑:

这就是我的表单的样子。如果我可能有原因的话,很抱歉给你带来了混乱。

代码语言:javascript
复制
<div class="row bottom-spaced-small">
        <div class="col-md-3">
            Number*
        </div>
        <div class="col-md-9">
            <input name="txtNumber" ng-disabled="somevalue" min="1" step="1" type="number" ng-required="true" ng-maxlength="50" ng-model="someNumber" class="form-control color-black" />
        </div>
        <div class="row" style="padding-left: 30px" ng-if="someForm.$submitted && !someForm.txtNumber.$valid">
            <span style="color: red">Number is mandatory and must be a non 0 positive number.</span>
        </div>
    </div>
EN

回答 4

Stack Overflow用户

发布于 2015-12-10 20:46:20

虽然要检查support,但可以设置min属性;

代码语言:javascript
复制
<input type="number" min="0" step="1">
票数 7
EN

Stack Overflow用户

发布于 2015-12-10 20:47:17

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

type是输入字段的类型,step定义了允许的数字的步长,即只允许整数,最后将min设置为零意味着不允许使用负数。因此,只允许正整数(整数)和零。

票数 2
EN

Stack Overflow用户

发布于 2015-12-12 08:14:11

好的伙计们,

谢谢你贴出了一些有效的答案,但我的要求是另一回事。因此,我决定编写我自己的指令来解决这个问题。

代码语言:javascript
复制
'use strict';

(function () { var app = angular.module("common");

代码语言:javascript
复制
var onlyInteger = function () {
    return {
        restrict: "A",
        require: '?ngModel',
        link: function (scope, element, attrs, ctrl) {
            ctrl.$parsers.push(function (inputValue) {
                if (inputValue == undefined) return '';
                var transformedValue = inputValue.replace(/[^0-9]/g, '');                    
                if (transformedValue !== inputValue) {
                    ctrl.$setViewValue(transformedValue);
                    ctrl.$render();
                }

                return transformedValue;
            });
        }
    };
};

app.directive('onlyInteger', onlyInteger);
}());

<div class="row bottom-spaced-small">
        <div class="col-md-3">
            Number
        </div>
        <div class="col-md-9">
            <input name="txtNumber" only-integer ng-required="true" ng-maxlength="50" ng-model="someNumber" class="form-control color-black" />
        </div>
        <div class="row" style="padding-left: 30px" ng-if="someForm.$submitted && !someForm.txtNumber.$valid">
            <span style="color: red">Number is mandatory and must be a non 0 positive number.</span>
        </div>
    </div>

这里有两件事,我删除了作为number type="number“的控件,并包含了作为属性的指令。

在控件中编写的模式几乎是绑定的和静态的。如果我们希望更通用一点,那么将模式作为属性传递,并在指令中捕获以针对该模式进行验证。

欢迎建议和更正。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34202182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档