【问题标题】:Removing button from Angularjs UI bootstrap datepicker从 Angularjs UI 引导日期选择器中删除按钮
【发布时间】:2014-06-06 13:09:39
【问题描述】:

从 Angularjs 的 UI Bootstrap 示例中,我设法使用以下代码创建了 UI 日期选择器。

<div class="col-md-2">
 <p class="input-group">
    <input type="text" class="text-box input-large input-large-altered" name="HandOverToOwner" datepicker-popup="dd.MM.yyyy"  ng-model="project.dt" is-open="opened" ng-required="true"  />
          <span class="input-group-btn">
             <button type="button" class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
           </span>
  </p>
  <span class="help-block" ng-show="ProjectCreate.HandOverToOwner.$error.required">Required*</span>
</div>

现在我想摆脱日历按钮并在选择编辑框时启用弹出日历。如何替换这个 is-open="opened" 属性?

app.controller('createProjectController', ['$scope', function ($scope, $timeout) {

     $scope.project = {};
       $scope.clear = function () {
            $scope.project.dt = null;
        };
        $scope.open = function ($event) {
            $event.preventDefault();
            $event.stopPropagation();
            $scope.opened = true;
        };

        $scope.format = 'dd.MM.yy';

        $scope.dateOptions = {
            formatYear: 'yy',
        };
    }]);

【问题讨论】:

    标签: angularjs twitter-bootstrap datepicker


    【解决方案1】:

    如果我正确理解了您的问题,并且您希望在单击输入字段时触发日期选择器,则需要在您的&lt;input&gt;元素中添加ng-click=open($event)

    <div class="col-md-2">
     <p class="input-group">
        <input type="text" class="text-box input-large input-large-altered" name="HandOverToOwner" datepicker-popup="dd.MM.yyyy"  ng-model="project.dt" is-open="opened" ng-click="open($event)" ng-required="true"  />
      </p>
      <span class="help-block" ng-show="ProjectCreate.HandOverToOwner.$error.required">Required*</span>
    </div>
    

    See plunker

    编辑

    <div class="col-md-2">
     <p class="input-group">
        <input type="text" class="text-box input-large input-large-altered" name="HandOverToOwner" datepicker-popup="dd.MM.yyyy"  ng-model="project.dt1" is-open="opened['id1']" ng-click="open($event, 'id1')" ng-required="true"  />
      </p>
      <p>
        <input type="text" class="text-box input-large input-large-altered" name="HandOverToOwner" datepicker-popup="dd.MM.yyyy"  ng-model="project.dt2" is-open="opened['id2']" ng-click="open($event, 'id2')" ng-required="true"  />
      </p>
      <span class="help-block" ng-show="ProjectCreate.HandOverToOwner.$error.required">Required*</span>
    </div>
    

    在js文件中

    $scope.opened = [] # initalize open as array somewhere in your controller
    
    $scope.open = function ($event, id) {
      $event.preventDefault();
      $event.stopPropagation();
      $scope.opened[id] = true;
    };
    

    new plunker

    【讨论】:

    • 您好,感谢您的回复。但在这种情况下,如果我有多个相同形式的日期选择器,通过单击一个它会在所有框中打开弹出窗口。在其他情况下,我将不得不为每个文本框编写函数。有没有办法没有 ng-click="open($event)" 属性。
    • 好的。添加了一种可能(但可能有点混乱)的方式来使用多个日期选择器。解决方案是为$scope.opened 使用一个数组,并在 html 中的 is-open 中使用它。也为此添加了一个 plunker。
    • 这解决了问题.. 谢谢。但是我注意到,如果我切换到 0.10.0 版本,则不再需要 ng-click 属性。我不知道为什么:) 但现在我会接受你的解决方案。感谢您帮助这个新手...
    • @Hilde 我很想在 plunkler 中看到你的答案,但不幸的是链接不起作用:(
    • @MuhammedAthimannil 看来,plunkers 走了,是的。感谢您为我提供有关 taht 的反馈。我会尽快提供一些新的!修复后我会告诉你的:)
    猜你喜欢
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    相关资源
    最近更新 更多