gpt4 book ai didi

javascript - 使用 Angular ngMessage 进行带有错误消息的表单验证

转载 作者:行者123 更新时间:2023-11-28 06:43:59 24 4
gpt4 key购买 nike

我正在使用ui-select有一些多选字段,我想实现一个客户端 <form>验证如下:

<form name="newProjectForm" ng-submit="p.addProject()" class="inputsContainer" novalidate> 
<div class="form-group" ng-class="{ 'has-error' : newProjectForm.frameworks.$invalid &&
!newProjectForm.frameworks.$pristine }">
<label>Frameworks</label>
<ui-select name="frameworks" multiple ng-model="p.newProject.frameworks" sortable="true"
close-on-select="false" required>
<ui-select-match placeholder="Select framework...">{{$item.name}}</ui-select-match>
<ui-select-choices repeat="framework.id as framework in p.frameworksList
| propsFilter: {name: $select.search, language: $select.search}">
<div ng-bind-html="framework.name | highlight: $select.search"></div>
<small>
language : <span ng-bind-html="''+framework.language | highlight: $select.search"></span>
</small>
</ui-select-choices>
</ui-select>
<div ng-messages="newProjectForm.frameworks.$error">
<p ng-messages="required">THIS IS REQUIRED</p>
</div>
<p ng-show="newProjectForm.frameworks.$invalid && !newProjectForm.frameworks.$pristine"
class="help-block">Project frameworks is required.</p>
</div>
<!-- ... -->

所以,问题是我尝试的条件不起作用:

newProjectForm.frameworks.$invalid && !newProjectForm.frameworks.$pristine">似乎总是错误的。

<div ng-messages="newProjectForm.frameworks.$error">似乎不太有效。

但是,我使用此行进行了测试:

<div class="form-group" ng-class="{ 'has-error' : true }">

它起作用了,所以我猜这就是不起作用的条件。

最佳答案

好的,看来 ui-selectrequired 不能一起工作。

因此,如果您遇到同样的问题,您可以使用自定义指令而不是必需的:

app.directive('uiSelectRequired', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$validators.uiSelectRequired = function(modelValue, viewValue) {
if (modelValue && modelValue.length > 0)
return true;
return false;
};
}
};
});

然后您只需在 HTML View 中将 required 替换为 ui-select-required 即可。

关于javascript - 使用 Angular ngMessage 进行带有错误消息的表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33550977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com