【发布时间】:2016-11-01 14:08:09
【问题描述】:
我有这样的表格,
<form name="stakeholderForm">
<div class="form-group evy_aboutme_cl05">
<div class="form-group evy_form_edit" show-errors>
<label for="InputFname">First Name</label>
<input type="text" name="fname" class="form-control" id="InputFname" placeholder="" ng-model="vm.stakeHolder.first_name" ng-blur="vm.saveStakeholder();" required>
<div ng-if="stakeholderForm.fname.$error.required" ng-messages="stakeholderForm.fname.$error" ng-include="'app/shared/messages.html'"></div>
<!-- <div ng-if="vm.firstname" class="evy_user-preference_error">First name is required</div> -->
</div>
<div class="form-group evy_form_edit" show-errors>
<label for="InputLname">Last Name</label>
<input type="text" name="lname" class="form-control" id="InputLname" placeholder="" ng-model="vm.stakeHolder.last_name" ng-blur="vm.saveStakeholder();" required>
<div ng-if="stakeholderForm.lname.$error.required" ng-messages="stakeholderForm.lname.$error" ng-include="'app/shared/messages.html'"></div>
<!-- <div ng-if="vm.lastname" class="evy_user-preference_error">Last name is required</div> -->
</div>
</div>
<div class="form-group evy_insights_tag_cmpny" show-errors>
<label>Company</label>
<evy-typeahead c-type="company" prompt="Type min 3 charaters for a Company" title="company" subtitle="company_id" model="vm.stakeHolder.company" model-id="vm.company_id" on-blur="vm.saveStakeholder();" required="true"></evy-typeahead>
<!-- <div ng-if="vm.companyname" class="evy_user-preference_error">Company name is required</div> -->
<div ng-if="stakeholderForm.name.$error.required" ng-messages="stakeholderForm.name.$error" ng-include="'app/shared/messages.html'"></div>
</div>
</form>
我正在尝试在调用时重置此表单
vm.addNewStakeHolder = function(id){
vm.stakeHolder = {}
}
但仍然存在验证错误。它没有隐藏。我尝试了“setPristine”和“setValidity”。但没有奏效。有什么帮助吗?
【问题讨论】:
-
一件事:在你的表单元素上,你需要 novalidate 来禁用浏览器的原生表单验证。
<form name="stakeholderForm" novalidate>...</form> -
@dinony,感谢关注
-
您的输入元素具有
required属性。所以,将模型设置为空对象时,自然会设置错误,这也是意料之中的。也许您可以尝试使用ngRequired指令。<input ... ng-required="!isEmpty(vm.stakeHolder)"> -
@dinony,尝试了 ngRequired,但没有帮助。
-
好的,我已经添加了答案,希望对您有所帮助。
标签: angularjs validation