【问题标题】:angular remove form validation after form submit表单提交后角度删除表单验证
【发布时间】:2015-09-24 13:00:40
【问题描述】:

我正在处理一个只有两个字段的小表单。

1.textarea 命名消息

2.输入类型文件

我的表单验证在提交按钮上运行良好。但是在提交表单后,选定的文件不会变为空白,并且消息字段的验证消息不会隐藏。

我的表格如下:-

<div ng-controller="discussCtrl">
  <form name="message_frm" enctype="multipart/form-data" novalidate>
    <div class="control-group" ng-class="{
                                         true : 'error'
                                        } [submitted && message_frm.message.$valid]">
      <div class="col-xs-12 text-left">
        <!--<div class="row">-->
        <input type="file" ng-file-select="onFileSelect($files)" id="file" name='file' model='discussion.attach' value="">
        <span class="fileNotice">Max file size is 1MB, allowed files are .jpeg, .png, .jpg, .gif, .odt, .xls, .doc, .pdf</span>
        <span ng-show="fileError" id="fileError" class="angular-error simplebox">Please provide a valid file</span>

      </div>
      <div class="col-md-12">
        <div class="boxTextarea">
          <textarea class="sendMesTextarea" id="frmMessage" name="message" placeholder="Write your message here......" ng-model="discussion.message" ng-minlength="10" ng-maxlength="500" required></textarea>
          <span class="angular-error" data-ng-if="message_frm.message.$dirty && message_frm.message.$invalid"> </span>
          <span class="angular-error" data-ng-if="(message_frm.message.$dirty || sub) && message_frm.message.$error.required">Message required.</span>
          <span class="angular-error" data-ng-if="(sub && message_frm.message.$error.minlength) || (message_frm.message.$error.minlength)">min length is 10 </span>
          <span class="angular-error" data-ng-if="(sub && message_frm.message.$error.maxlength) || (message_frm.message.$error.maxlength)">min length is 500 </span>
          <div class="buttonsRow">
            <button type="submit" data-toggle="tooltip" class="greenBtn" ng-click="sub = 1; submitDiscussionData('{{node.id}}')" ng-init="button = 'Send'">{{button}}</button>
          </div>
        </div>
      </div>
    </div>
  </form>
</div>

我在控制器中使用以下代码:-

$scope.discussion.messages = '';// This blanks message field
$scope.discussion.attach = '';////Does not blank file
$scope.button = 'Send';
$scope.discussion = '';  //Try to blank model                 
$scope.message_frm.$setPristine();//Does not works
$scope.message_frm.$setValidity();//Does not works
return;

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    你可以做的是保留原始对象的副本

    var original = $scope.discussion;
    

    然后在重置期间:

    $scope.discussion = angular.copy(original)
    $scope.message_frm.$setPristine()
    

    同时重置按钮类型

    type='reset' in  <button>
    

    【讨论】:

    • 您好,感谢您的回答。我找到了消息字段的解决方案,我只是在表单提交后设置了 sub=0 但我遇到了输入文件类型的问题。这不是空白
    • 我可以在这里使用 javascript,但不想要。任何答案都会很明显
    • 它的良好设计是 ng-model 不会被 $setPristine 重置。您将不得不手动执行此操作.. 不知道不使用 javascript 怎么能做到这一点
    • $scope.discussion.messages = ''; $scope.discussion = ''; $scope.sub = 0; document.getElementById("file").value = ""; $scope.message_frm.$setPristine();上面的代码工作正常,谁能告诉我如何用角度方法重置文件。
    猜你喜欢
    • 2015-07-03
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 2015-11-12
    • 1970-01-01
    相关资源
    最近更新 更多