Javascript 如何仅允许<;中的数字0-5;输入>;带AngularJS的字段?
我有这样一个输入字段: HTMLJavascript 如何仅允许<;中的数字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>
<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]+$/"