如何阻止(使用Angular)用户输入一个简单数字中的4个以上的数字:
<input type="number">
我使用了ng-maxlength
和max
属性,但w3.org规范和官方网站Angular指定的那些属性不会阻止用户添加更多数字。
我想要的是输入以4位数字停止,比如以某种方式添加面具或其他东西。
答案 0 :(得分:5)
以下是使用JavaScript执行此操作的方法:
<强> HTML 强>
<input type="number" oninput="checkNumberFieldLength(this);">
JavaScript
function checkNumberFieldLength(elem){
if (elem.value.length > 4) {
elem.value = elem.value.slice(0,4);
}
}
如果适用于您的情况,我还建议对输入的Number元素使用min
和max
HTML属性。
答案 1 :(得分:3)
将ng-pattern
与正则表达式一起使用
\ d:数字
{4}:4次
<input type="number" ng-pattern="/^\d{4}$/" />
答案 2 :(得分:1)
好吧,正如有人说上面的maxlength不适用于类型编号的输入,所以你可以这样做:
<input type="text" pattern="\d*" maxlength="4">
当然,如果不要求输入类型=“数字”
,这样做答案 3 :(得分:1)
我会像你一样在你的控制器中创建一个函数
angular.module("my-app", [])
.controller('my-controller', function($scope) {
$scope.checkInput = function() {
if (input.value.length > 4) {
input.value = input.value.slice(0,4);
}
});
});
然后在你看来你可以做这样的事情
<input type="number" max="9999" ng-input="checkInput()" />
警告:max属性仅适用于微调器。用户仍然可以输入高于该数字的数字。这是一个例子
<input type="number" max="9999" />
&#13;
答案 4 :(得分:0)
你可以使用modernizr和jquery来做到这一点。
我在这里做了一个例子:https://jsfiddle.net/5Lv0upnj/
$(function() {
// Check if the browser supports input[type=number]
if (Modernizr.inputtypes.number) {
$('input[type=number]').keypress(function(e) {
var $this = $(this),
maxlength = $this.attr('maxlength'),
length = $this.val().length;
if (length >= maxlength)
e.preventDefault();
});
}
});