我正在处理Angular表单验证,其中用户需要输入必填字段。
为了进行必填字段验证,我使用了Angular表单验证。使用ng-required="true"
,但不幸的是在Chrome浏览器中会出现工具提示(如下图所示)。
如果在输入标记中使用novalidate
,则验证将不起作用,那么我该如何在提交按钮点击时显示所有无效的必填字段"required messages"?
我正在处理Angular表单验证,其中用户需要输入必填字段。
为了进行必填字段验证,我使用了Angular表单验证。使用ng-required="true"
,但不幸的是在Chrome浏览器中会出现工具提示(如下图所示)。
如果在输入标记中使用novalidate
,则验证将不起作用,那么我该如何在提交按钮点击时显示所有无效的必填字段"required messages"?
novalidate
属性以禁用浏览器验证。JS Fiddle
novalidate可以解决您的问题,要在表单提交时显示错误消息,您可以使用form.$submitted
事件,在表单提交期间触发。
例如,在您的情况下
<input type="text" name="taskName" placeholder="Task Name" ng-model="tastName" ng-required="true" />
<span class="error" ng-show="frm.taskName.$error.required && (frm.taskName.$touched || frm.$submitted)">Name is required</span>
(注意:保留了HTML代码,未进行翻译)使用 ng-class 和 form.$submitted 获取答案(感谢 @Shailendra Sharma 的回答)
这个逻辑将在提交时显示错误信息和带有红色边框的输入字段,不会显示任何 Chrome 工具提示。
<input type="text" ng-class="{'inputError': (frm.taskName.$error.required && (frm.taskName.$touched || frm.$submitted))}" name="taskName" novalidate placeholder="Task Name" ng-model="tastName" ng-required="true" />
<span class="error" ng-show="frm.taskName.$error.required && (frm.taskName.$touched || frm.$submitted)">Name is required</span>
{{链接1:Fiddler}}
novalidate是一个用于表单的属性,让浏览器停止验证。
这里的文档解释了它的用法https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form
<form name="frm" ng-submit="add()" novalidate>
<input type="text" name="taskName" placeholder="Task Name" ng-model="tastName" ng-required="true" />
<span class="error" ng-show="frm.taskName.$error.required && frm.taskName.$touched">Name is required</span>
<!--{{ frm.taskName.$error }}-->
<br />
<label>estimation time:</label>
<select ng-model="time" name="time" ng-options="t for t in NOTask" ng-required="true">
<option value="" selected="selected">Please select</option>
</select>
<span class="error" ng-show="frm.time.$error.required && frm.time.$touched">Please select time</span>
<br /> {{ frm.$valid }}
<input type="submit" name="name" value="Add" />
</form>