javascript - AngularJS 完全重置表单

标签 javascript angularjs forms

我有一个相当大的表单,正在客户端由 Angular 进行验证。我试图找出如何重置表单的状态及其输入,只需单击“重置”按钮即可。

我已经在表单上尝试了 $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 设置为上面定义的内容不会由于某种原因重置字段。

最佳答案

尝试通过ng-model清除

$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.project = {
      name: "",
      lastName: ""
  };
}

关于javascript - AngularJS 完全重置表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34138548/

相关文章:

angularjs - 无法从 https ://api. github.com webstorm 获取标签

JavaScript 事件序列

javascript - 使用 $http.jsonp 检索 jsonp 时出现问题

javascript - 如何控制 Angular 滚动条?

angularjs - Angular 套接字 io 未定义

jQuery 显示/隐藏基于另一个下拉选项的下拉选项

javascript - XMLHttpRequest() 不发送 FormData() 导致 PHP $_FILES 数组为空并且没有上传文件

jquery - 如果选择字段,则从组中获取所有选定的选项

javascript - 根据过滤器下拉列表在 d3 中的力图中添加和删除节点和链接

javascript - Twitter 时间轴小部件在 Chrome 30 中无法运行