【问题标题】:Angularjs+how to take a previous input field value in directiveAngularjs +如何在指令中获取先前的输入字段值
【发布时间】:2014-03-20 23:58:56
【问题描述】:

我有一个表单,其中有 2 个日期字段,来自 datetodate。我正在编写一个指令来比较这个日期字段。

如何获取提交的起始日期。我在toDateonBlur 上调用我的自定义指令,现在需要获取起始日期。表单设计如下。

<div class="row">
  <div class="col-xs-6 col-sm-6 col-6">
    <label>From date</label>
    <input type="text" id="eduFromDate" name="eduFromDate" class="form-control" 
           ng-model="education.fromDate" ui-date/>
  </div>
  <div class="col-xs-6 col-sm-6 col-6">
    <label>To date</label>
    <input type="text" name="edutoDate" class="form-control" id="edutoDate" 
           ng-model="education.toDate" ui-date before-date/>
    <span class="error input-icon fui-alert" 
          ng-show="historyForm.edutoDate.$error.beforeDate"></span>
  </div>
</div>

【问题讨论】:

  • 也许这个plunker 会有所帮助。您要计算日期范围吗?
  • @stewie 你的链接对我制定指令有很大帮助。
  • @Stewie 感谢您的链接,它对我帮助很大。我正在比较 2 个日期,比如开始日期和结束日期。在我的一种形式中克隆了这些元素。所以我怎么能识别每个元素都不同。下面给出的是我的 html 代码和指令。

标签: javascript angularjs angularjs-directive


【解决方案1】:

我的指令代码如下。

directives.directive('beforeDate', [
    function() {

        var link = function($scope, $element, $attrs, ctrl) {

            var validate = function(viewValue) {
                var comparisonModel = $attrs.beforeDate;
                console.log(new Date(comparisonModel));
                if(!viewValue || !comparisonModel){
                    ctrl.$setValidity('beforeDate', true);
                }
                ctrl.$setValidity('beforeDate', new Date(viewValue) > new Date(comparisonModel) );
                return viewValue;
            };

            ctrl.$parsers.unshift(validate);
            ctrl.$formatters.push(validate);

            $attrs.$observe('beforeDate', function(comparisonModel){
                console.log('comparisonModel '+comparisonModel)
                return validate(ctrl.$viewValue);
            });

        };

        return {
            require: 'ngModel',
            link: link
        };

    }
]);

按照我给出的形式

<span ng-repeat="education in userEducation">
  <div class="row">
    <div class="col-xs-6 col-sm-6 col-6">
      <label>From date</label>
      <input type="text" id="eduFromDate" name="eduFromDate" class="form-control" ng-model="education.fromDate" ui-date>
    </div>
    <div class="col-xs-6 col-sm-6 col-6">
      <label>To date</label>
      <div class="form-group has-success">
        <input type="text" name="edutoDate" class="form-control" id="edutoDate" ng-model="education.toDate" ui-date before-date="eduFromDate">
        <span class="error input-icon fui-alert" ng-show="historyForm.edutoDate.$error.beforeDate"></span>
      </div>
    </div>
  </div>
</span>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2017-04-09
    • 2018-07-06
    • 2021-03-23
    • 1970-01-01
    相关资源
    最近更新 更多