Angularjs表单验证显示页面加载成功
angularjs form validation showing success on page load
我的控制器中有一个函数来验证可用复选框和一个自由文本区域中是否有最多三个选择。用户可以选择三个复选框并将文本区域保留为空,也可以选择两个复选框并在文本区域键入一些文本。三个的组合是允许的。该字段为required
,用户必须选择三者的组合。函数本身正在工作,但验证显示成功!问题是,当页面加载时,所有的选项都变成绿色,并显示成功消息,而用户甚至没有点击它的任何部分。
下面是html代码:
<form name="Form">
<div class="form-group" >
<div class="form-group" ng-class="{'has-error':Form.cooptype.$dirty && Form.cooptype.$invalid, 'has-success':Form.cooptype.$valid}">
<label class="control-label" translate="list.cooporationtype">
Type(s) of project<span class="symbol required"></span>
</label>
:<br/>
<div ng-repeat="topic in list.cooperationtypelist">
<div > {{topic.item}}</div>
<ul >
<li ng-repeat="subitem in topic.subitems">
<input type="checkbox" name="cooptype"
ng-disabled="checkboxDisable(subitem.key)"
ng-model="myModel.cooperationtype[subitem.key]">
{{subitem.values | translate}}
</li>
</ul>
<span class="error text-small block" ng-if="Form.cooptype.$dirty && Form.cooptype.$error.required">Field is required.</span>
<span class="success text-small" ng-if="Form.cooptype.$valid">Done!</span>
</div>
</div>
<div class="form-group" ng-class="{'has-error':Form.cooptypetext.$dirty && Form.cooptypetext.$invalid, 'has-success':Form.cooptypetext.$valid}">
<p>or type it in yourself:</p>
<textarea type="text" class="form-control" name="cooptypetext" placeholder="Enter the cooperation type (max of 100 characters)"
ng-model="myModel.cooperationtype.coopfreetext"
ng-disabled="checkboxDisable('cooptypetext')"
ng-minlength=5
ng-maxlength=100></textarea>
<span class="error text-small block" ng-if="Form.cooptypetext.$error.maxlength">Too long!</span>
<span class="error text-small block" ng-if="Form.cooptypetext.$error.minlength">Too short!</span>
<span class="success text-small" ng-if="Form.cooptypetext.$valid">Done!</span>
</div>
</div>
</form>
这是我的控制器中的函数:
$scope.myModel.cooperationtype = {};
$scope.checkboxDisable = function(key) {
if(!$scope.myModel.cooperationtype[key]) {
var count = 0;
Object.keys($scope.myModel.cooperationtype).forEach(function(key) {
if($scope.myModel.cooperationtype[key]) {
++count;
}
});
if(count >= 3) {
return true;
}
}
return false;
};
您需要检查以确保字段是脏的,也就是说,除了有效之外,用户还在其中键入了一些输入。您还需要使用ng-form,而不是div
相关文章:
- AngularJs|Don'在成功加载所有指令htmls之前,不显示页面
- 将成功消息加载到DIV中
- Ajax 加载 GIF 不会在成功时删除
- 按钮在第一次成功的 ajax 数据加载后不起作用
- requireJS 中的车把加载不成功
- Ajax成功后,重新加载部分页面,而不是整个页面.拉拉维尔
- 我无法在自定义Wordpress主题中成功加载jQuery
- javascript文件不可用的可能原因是什么;t成功加载
- 如何在使用jQuery重新加载页面后淡出成功消息
- Jquery Ajax在成功后停止加载
- Jquery检查加载是否成功
- 在Ajax上加载Google图表——成功
- 成功登录谷歌后加载页面
- 是否有工作道场选项卡容器可以在内容窗格中成功重新加载
- 如何检测如果谷歌地图加载成功
- Angularjs表单验证显示页面加载成功
- 检测视频.加载成功与否- javascript
- Javascript跨域图像加载检查加载图像是否加载成功
- 在远程URL加载成功后获取内容
- 查看SWF是否加载成功