【问题标题】:Angular form validation is invalid after changing the value in the scope var更改范围 var 中的值后,角度表单验证无效
【发布时间】:2015-05-02 20:28:39
【问题描述】:

重现问题

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

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

  1. 按下“SetValue”按钮

现在您看到值已更改,但 myForm.input.$valid 仍然为 false

问题

如何通过表单中的代码设置时间,结果 myForm.input.$valid 为真?

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>

【问题讨论】:

    标签: angularjs forms validation input


    【解决方案1】:

    我建议你使用 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 日期对象。

    【讨论】:

      【解决方案2】:

      模型对象必须始终是日期对象

      $scope.example.value = new Date(1970, 0 ,1, 15, 0, 0);
      

      见here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-14
        • 1970-01-01
        • 2016-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多