Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅允许<;中的数字0-5;输入>;带AngularJS的字段?_Javascript_Regex_Angularjs_Html_Validation - Fatal编程技术网

Javascript 如何仅允许<;中的数字0-5;输入>;带AngularJS的字段?

Javascript 如何仅允许<;中的数字0-5;输入>;带AngularJS的字段?,javascript,regex,angularjs,html,validation,Javascript,Regex,Angularjs,Html,Validation,我有这样一个输入字段: HTML <input ng-model="newtodo.effort" ng-enter="addTodo()" type="number" min="0" max="5" maxlength="1" size="1" step="1" class="form-control marginBottom" placeholder="Aufwand" aria-describedby="basic-addon2" required>

我有这样一个输入字段:

HTML

<input ng-model="newtodo.effort" ng-enter="addTodo()" type="number" min="0" max="5"
       maxlength="1" size="1" step="1" class="form-control marginBottom"
       placeholder="Aufwand" aria-describedby="basic-addon2" required></input>
在上面的输入字段中,我只希望允许整数值0、1、2、3、4和5

不允许使用浮点数(如1.4)、字符(如foo)和小于0或大于5的值

输入字段可能不是空的


正如你所看到的,我已经在使用HTML5输入属性,但我知道我不能依赖这些属性。此外,我还检查服务器端输入的值是否符合我的限制。到目前为止还不错,但为了提高我的web应用程序的可用性和响应性,我还想使用AngularJS在JavaScript中验证这些值。我该怎么做?我知道我可以在
$scope.addTodo(todo)
中执行复杂的值检查,然后如果用户输入的值不正常,则向用户输出错误消息,但我不知何故“感觉”到有一种更好、更简单的“angularish”方法使用正则表达式和一行程序?如果是这样的话,请向我解释如何以有角度的方式进行。谢谢

您可以将以下属性添加到输入字段中

ng-pattern="/^[0-5]+$/" 
并据此验证:

函数formCtrl($scope){
}

数字必须介于0-5之间
不允许使用字符
该字段为必填字段

您可以使用ngPattern设置要验证的正则表达式


有关更多详细信息,请参阅文档:

谢谢,但如何输出有用的错误消息?例如,如果用户输入1.6,我想显示一条错误消息,如:
不允许浮点数
。但是,如果用户输入了“foo”,我想显示:
此处不允许任何文本
我添加了一个JSFIDLE,精确地显示了您可以如何做到这一点。谢谢您的帮助。这只会显示一条通用错误消息,即用户输入的值与模式不匹配,但是否有办法根据输入给出更详细的错误消息?例如,如果用户输入非数字,则为“不允许输入字符”;如果用户输入值8,则为“值到高”;如果用户根本没有输入任何内容,则为“字段是必需的”?
ng-pattern="/^[0-5]+$/"