角度验证 NG 消息在提交和擦除文本后不显示必需
Angular Validation NG-message dont show required after submit and erase text
这是我当前为我的表单设置的验证设置
<ng-messages for="searchForm.$error" ng-if="searchForm.$submitted">
<ng-message when="required" class="error-message">This search field is required.</ng-message>
</ng-messages>
和我的表格
<form role="form" ng-submit="searchForm.$valid && searchcode()" name="searchForm" novalidate>
它工作正常。
但这是我不喜欢这种情况
1)在空搜索框上按回车键 ->显示正确的消息"字段为必填字段"
2)开始键入并擦除文本而不按回车键 ->再次显示错误消息
这是我不想要的第二种情况...有什么想法吗?
也许错误消息的字段名称不正确。无法说出您的不起作用的确切原因,因为您没有提供示例。但是,当我测试时,它工作正常。
<form ng-controller="MyCtrl" role="form" name="searchForm" novalidate
ng-submit="searchcode()">
<input type="text" ng-model="field" name="myField"
ng-keypress="searchForm.$submitted=false"
required minlength="5" />
<ng-messages ng-if="searchForm.$submitted"
for="searchForm.myField.$error">
<ng-message when="required" class="error-message">
This search field is required.
</ng-message>
</ng-messages>
</form>
http://plnkr.co/edit/56koY7YxPDVFe4S26x9N?p=preview
您可以编写自己的自定义验证程序,然后使用 if 语句来决定要验证的内容。 例如,由于您不希望在某人擦除字符时进行任何验证,因此您可以编写验证器,以便它接受一个事件,然后您可以获取触发事件的密钥的 char 代码,选择不验证该字符代码何时表示退格或删除。
我会以不同的方式做到这一点。希望对您有所帮助。如果表单无效且脏污,它将显示消息。当用户提交时,通过将表单设置为原始表单来重置表单。这样,您可以将$scope.field重置为空并且不显示错误消息。
<form ng-controller="MyCtrl" role="form" name="searchForm" novalidate ng-submit="searchcode()">
<input type="text" ng-model="field" name="myField" required minlength="5" />
<p class="error-message" ng-show="!searchForm.$valid && searchForm.$dirty">
This search field is required.
</p>
<ul>
<li>$submitted : {{searchForm.$submitted}}
<li>$valid: {{searchForm.$valid}}
<li>$dirty: {{searchForm.$dirty}}
</ul>
</form>
提交时,通过将表单设置为原始表单来重置表单。
$scope.searchcode = function() {
$scope.searchForm.$setPristine();
$scope.field="";
console.log('submitted');
}
http://plnkr.co/edit/m0cCmOAtY2J8fhSv0DVg?p=preview
相关文章:
- 为什么在页面上单击的先前链接的文本显示在 AJAX 请求中
- JavaScript NaN错误,输入文本显示为NaN
- 关于socket.io实时文本显示的问题
- 如何使用javascript使文本显示在文本字段中
- 在它们之间切换时,jQuery 文本显示在活动文本下方
- 使用 ajax 乱码文本显示图像
- 带有文本显示js功能的图像映射 - 某些部分不显示
- 来自 Ajax 请求的文本显示不正确
- 如何使用 JavaScript 使文本显示
- 是否可以将元素内部的文本显示在 ::在 css 之前
- on更改文本框的文本显示在另一个文本框上
- 在文本显示在Scroll上之前在页面上隐藏文本的问题
- 使用带文本显示的Jquery切换文本
- 如何使文本显示速度变慢
- 如何将图片添加到点击计数器文本显示<图像><点击量>
- 文本显示有延迟
- 根据在另一个文本框中输入的文本显示文本框中的文本
- 如何从点击文本显示文件浏览器,并在悬停文本时将鼠标光标更改为指针
- 使文本显示为几行可点击的线条
- 如何使文本显示