我有一個很大的表單,它在客戶端被Angular驗證。我想弄清楚如何重置窗體的狀態和它的輸入,只需點擊一個重置按鈕。AngularJS完全重置表格
我試過$setPristine()
表單上,但它並沒有真正的工作,這意味着它不會清除ng-*
類來重置窗體到它的原始狀態,沒有驗證執行。
這裏是我的形式的短版:
<form id="create" name="create" ng-submit="submitCreateForm()" class="form-horizontal" novalidate>
<div class="form-group">
<label for="name" class="col-md-3 control-label">Name</label>
<div class="col-md-9">
<input required type="text" ng-model="project.name" name="name" class="form-control">
<div ng-show="create.$submitted || create.name.$touched">
<span class="help-block" ng-show="create.name.$error.required">Name is required</span>
</div>
</div>
</div>
<div class="form-group">
<label for="lastName" class="col-md-3 control-label">Last name</label>
<div class="col-md-9">
<input required type="text" ng-model="project.lastName" name="lastName" class="form-control">
<div ng-show="create.$submitted || create.lastName.$touched">
<span class="help-block" ng-show="create.lastName.$error.required">Last name is required</span>
</div>
</div>
</div>
<button type="button" class="btn btn-default" ng-click="resetProject()">Reset</button>
</form>
我的復位功能:
$scope.resetProject = function() {
$scope.project = {
state: "finished",
topic: "Home automation"
};
$("#create input[type='email']").val('');
$("#create input[type='date']").val('');
$scope.selectedState = $scope.project.state;
// $scope.create.$setPristine(); // doesn't work
}
此外,如果你能幫助我明確的電子郵件和日期字段的輸入值,而無需使用jQuery會很好。因爲將$scope.project
設置爲上面定義的內容不會因某些原因重置字段。
什麼是「真的沒有工作」是什麼意思? – Wawy
此外它會是有用的獲得顯示您的問題的plnkr。 – Wawy
它不清除'ng- *'類來將表單重置爲其原始狀態而未執行驗證 – dabadaba