angularjs - 更改范围变量中的值后, Angular 表单验证无效

标签 angularjs forms validation input

重现问题

  1. 在 Firefox 中打开 plunker
  2. 输入“oEfeowjewfj”

您会看到 myForm.input.$valid 为 false,这就是预期的结果。 之后我们继续:

  • 按下“SetValue”按钮
  • 现在您看到值已更改,但 myForm.input.$valid 仍然为 false

    问题

    如何通过表单中的代码设置时间并使 myForm.input.$valid 为 true?

    http://plnkr.co/edit/a4wz3bE36EbbQvftZoL5?p=preview

    <body ng-app="timeExample">
      <script>
     angular.module('timeExample', [])
       .controller('DateController', ['$scope', '$timeout', function($scope, $timeout) {
         $scope.example = {
           value: '14:00'
         };
         
         $scope.setValue = function() {
           $scope.example.value = "15:00"  
         }
       }]);
    </script>
    <form name="myForm" ng-controller="DateController as dateCtrl">
       Pick a between 8am and 5pm:
       <input type="time" id="exampleInput" name="input" ng-model="example.value"
           placeholder="HH:mm" min="08:00:00" max="17:00:00" required />
       <span class="error" ng-show="myForm.input.$error.required">
           Required!</span>
       <span class="error" ng-show="myForm.input.$error.time">
           Not a valid date!</span>
       <tt>value = {{example.value | date: "HH:mm:ss"}}</tt><br/>
       <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
       <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
       <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
       <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
       <button data-ng-click="setValue()">SetValue</button>
    </form>
    </body>
    

    最佳答案

    我建议您使用 Angular API 文档:https://docs.angularjs.org/api/ng/input/input%5Btime%5D

    您需要更改 setValue 函数:

    $scope.setValue = function() {
      $scope.example.value = new Date(2014, 1, 3, 14, 57, 0);
    }

    您必须将 ng-model 设置为有效的 javascript 日期对象。

    关于angularjs - 更改范围变量中的值后, Angular 表单验证无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28810610/

    相关文章:

    php - 我想知道如何在验证失败时停止提交表单?

    validation - 如何验证 JSF 中的多个字段?

    javascript - 带 PDFTron 的 Angular JS

    css - 部署到 IIS 服务器系统时 URL 的路径不起作用

    javascript - Angular : Pressing Enter Submits Empty Form Regardless of Values

    php - 如何修复我的电子邮件联系表单 PHP 中的这些错误?

    php - 什么会导致 $_FILES ['file' ] ['name' ] 为空?

    javascript - 如何从另一个 Controller 调用一个 Controller 的功能

    javascript - UI Bootstrap Accordion - ng-repeat 内的向下箭头

    javascript - jQuery 验证自定义方法不起作用