javascript - 如何借助类型为 ="date"的输入字段中的按钮打开日历?

标签 javascript html css

我有一个带有 type="date"input field 和一个 button:

<input  type="date"  name="DateOfBirth"class="form-control"  ng-model="patient.DateOfBirth" format="dd/mm/yyyy"  required="true" />
<span class="input-group-btn">
    <button type="button" class="btn btn-default" ng-disabled="patient.PatientId" ng-click="open()">
        <i class="fa fa-calendar"></i>
    </button>
</span>

所以当我点击按钮时,日历(日期选择器)应该打开。这可能吗?

最佳答案

由于您的代码片段包含一些 AngularJS 指令,我假设您在代码中使用了它,我也将在我的解决方案中使用它。

您需要将在 ng-click 上调用的 open 方法创建到您的 $scope 对象中。在上述方法中,选择日历元素并触发其 focus() 事件以打开日历。

下面的工作代码:

(function(){
  var app=angular.module('app',[]);
  app.controller('MainController', function($scope){
    $scope.open=function(){
      document.getElementById('DateOfBirth').focus();
    }
  });
})();
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app="app" ng-controller="MainController as app">
  
  <input type="date" id="DateOfBirth" name="DateOfBirth" class="form-control" ng-model="patient.DateOfBirth" format="dd/mm/yyyy" required="true" />
  
  <span class="input-group-btn">
    <button id="calendarButton" class="btn btn-default" ng-disabled="patient.PatientId" ng-click="open()">
      <i class="fa fa-calendar"></i>
    </button>
  </span>
    
</body>

然而,这也可以在完全没有 JavaScript 的情况下完成;但为此,您需要将 button 替换为 label。单击 label 时,它会触发分配给它的 input 元素:

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet"/>

<input type="date" id="DateOfBirth" name="DateOfBirth" class="form-control" ng-model="patient.DateOfBirth" format="dd/mm/yyyy" required="true" />
  
<span class="input-group-btn">
  <label for="DateOfBirth" class="btn btn-default" ng-disabled="patient.PatientId" ng-click="open()">
    <i class="fa fa-calendar"></i>
  </label>
</span>

关于javascript - 如何借助类型为 ="date"的输入字段中的按钮打开日历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37321367/

相关文章:

放大/缩小时 HTML Div 移动

jquery - 当标签文本增长时,使提交按钮向左扩展

java - 有没有办法为 JavaFX 类提供一个新样式的类,然后正常访问该类中的所有其他对象?

html - 更改文本大小时如何防止html div扩展

javascript - 如何将带有 django 标签的 javascript 代码加载到我的 django 模板中

javascript - 使用 find() 确定条件的结果

javascript - 如何从 Promise 引用 Angular 服务的变量然后在服务内部运行?

javascript - 如何通过python在html文件中删除和添加新内容

html - CSS 未覆盖 @media 查询中的 Bootstrap Margin 标记

javascript - 带有子元素的 jQuery 列表项图标切换