我正在尝试使用angularjs进行验证表单,到目前为止我做得很好。但是,当我提交我的重置按钮时,除了我从验证部分得到的错误消息之外,所有字段都会重置。重置表单时如何摆脱所有字段和错误消息。
当我按下重置按钮时就是这样
这是我的代码
<div class="page-header"><center><h2>Give us your Feedback</h2></center></div>
<!-- pass in the variable if our form is valid or invalid -->
<form name="userForm" ng-submit="submitForm(userForm.$valid)" novalidate>
<!-- NAME -->
<div class="form-group" ng-class="{ 'has-error' : userForm.name.$invalid && !userForm.name.$dirty }">
<label>Name*</label>
<input type="text" name="name" class="item-input-wrapper form-control" ng-model="user.name" required>
<p ng-show="userForm.name.$invalid && !userForm.name.$pristine " class="help-block">
<font color="#009ACD">You name is required.</font>
</p>
</div>
<!-- EMAIL -->
<div class="form-group" ng-class="{ 'has-error' : userForm.email.$invalid && !userForm.email.$dirty }">
<label>Email</label>
<input type="email" name="email" class="item-input-wrapper form-control" ng-model="user.email" required >
<p ng-show="userForm.email.$invalid && !userForm.email.$pristine" class="help-block">
<font color="#009ACD">Enter a valid email.</font>
</p>
</div>
<!-- USERNAME -->
<div class="form-group" ng-class="{ 'has-error' : userForm.username.$invalid && !userForm.username.$dirty }">
<label>Description</label>
<input type="text" name="username" class="item-input-wrapper form-control" ng-model="user.username" ng-minlength="5" ng-maxlength="60" required>
<font color="white">
<p ng-show="userForm.username.$error.minlength" class="help-block">
<font color="#009ACD">Description is too short.</font>
</p>
<p ng-show="userForm.username.$error.maxlength" class="help-block">
<font color="#009ACD">Description is too long.</font>
</p>
</font>
</div>
<div class="col"style="text-align: center">
<button align="left"class="button button-block button-reset"style="display: inline-block;width:100px;text-align:center "
type="reset"
ng-click="reset()" padding-top="true"
>
Reset
</button>
<button class="button button-block button-positive" style="display: inline-block;width:100px "
ng-click="submit()"
padding-top="true"
>
Submit
</button>
</div>
</form>
</div>
我的控制器
.controller('ContactCtrl', function($scope,$state,$ionicPopup, $timeout) {
$scope.showfeedback = function() {
$state.go('app.sfeedback');
};
$scope.submitForm = function(isValid) {
$scope.submitted = true;
// check to make sure the form is completely valid
if (!isValid) {
var alertPopup = $ionicPopup.alert({
title: 'Invalid data entered!',
});
} else {
var alertPopup = $ionicPopup.alert({
title: 'Feedback submitted',
});
}
};
$scope.reset = function() {
var original = $scope.user;
$scope.user= angular.copy(original)
$scope.userForm.$setPristine()
};
})
var original = $scope.user;
重置时:
$scope.user= angular.copy(original);
$scope.userForm.$setPristine();
去掉
type='reset' in <button>
这是表单控制器的Angular
文档。
问题内容: 我有一个角度复位功能,可以清除表单中的所有字段。如果我做类似的事情: 一切正常。但我想将此功能用于网站上的多种表单。如果我像这样传递表单对象: 那就行不通了。有人可以向我解释为什么会这样吗? 问题答案: 您有2个问题: 您没有访问传入的变量,而是仍访问当前作用域。 当您将参数传递给函数时,它通过引用传递。即使在使用时,它也不起作用,因为它仅更改 参数 的引用,而不更改传入的引用。 尝试
问题内容: 嗨,我有一个表格,单击按钮后会更新。 项目更新后,不会删除表单字段中输入的信息。我想知道在udpat后可以在angularjs中添加什么以添加上述代码,以便它也可以清除。谢谢 问题答案: 您可以通过以下方式重置表单,但是如果要将模型对象绑定到输入,则还需要注意清除这些输入,即: 编辑 正如ToodoN-Mike所指出的,不要忘记设置 该标志以角度1.3引入。
问题内容: AngularJS 1.1.x的路线图上有一个将表单字段重置为原始状态(重置脏状态)的功能。不幸的是,当前的稳定版本中缺少此功能。 将AngularJS 1.0.x的所有表单字段重置为其初始原始状态的最佳方法是什么? 我想知道这是否可以通过指令或其他简单的解决方法来解决。我更喜欢一种无需接触原始AngularJS来源的解决方案。为了澄清和演示该问题,提供了指向JSFiddle的链接。h
在用户单击重置按钮时,表单会被重置。使用type 特性值为"reset"的<input>或<button>都可以创建重置按钮,如下面的例子所示。 <!-- 通用重置按钮 --> <input type="reset" value="Reset Form"> <!-- 自定义重置按钮 --> <button type="reset">Reset Form</button> 这两个按钮都可以用来重置表
我在一个组件中有以下内容: 脚本: 因此,我将表单数据提交到我的数据库,然后在成功promise中,我使用它。$refs.form.reset();重新设置我的表单。 但是,我会立即收到错误消息,并且在每次提交后都会收到错误消息: "[Vue警告]:错误在下一个滴答:"TypeError:无法读取属性'长度'的未定义" 和 TypeError:无法读取未定义的属性“length”
问题内容: 首先,我需要将ng- form设置为无效,因为它是向导的后续部分。表单包含带有元素的网格。每个元素都有其自己的验证,但是问题是,当没有元素时,表单将显示为有效。当行数为0时,我需要将其标记为对于开始情况无效。怎么做? 问题答案: 经过研究后,以下代码对我来说很好用。在控制器中: 超时确保我们可以访问该表单。它们不是在第一次通过控制器上构建的,因此需要超时或监视。然后,我们将表单标记为无