日期范围选择器 html5

Posted

技术标签:

【中文标题】日期范围选择器 html5【英文标题】:date range picker html5 【发布时间】:2015-12-15 05:57:54 【问题描述】:

我想推出一个日期范围选择器,如下图所示。 ideal output

这是我现在正在执行的更新代码以及我现在拥有的输出。

$(function() 
  $("#fromperiod").datepicker(
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 1,
    onClose: function(selectedDate) 
      $("#toperiod").datepicker("option", "minDate", selectedDate);
    
  );
  $("#toperiod").datepicker(
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 1,
    onClose: function(selectedDate) 
      $("#fromperiod").datepicker("option", "maxDate", selectedDate);
    
  );
);
.picker 
  display: inline;
  border: 1px solid lightgray;
  padding : 4px;

input 
  border: 0;
<link href="https://code.jquery.com/ui/1.11.3/themes/smoothness/jquery-ui.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>Period</td>
    </tr>
    <tr>
      <td>
        <div class='picker'>
          <label for="fromperiod">From</label>
          <input type="text" id="fromperiod" name="from">
          <label for="toperiod">to</label>
          <input type="text" id="toperiod" name="to">
        </div>
      </td>
    </tr>
  </tbody>
</table>

这是我基于代码的输出。 output

【问题讨论】:

它需要一些 CSS 样式才能看起来像您想要的输出,您尝试过什么吗? @zedd 我尝试对 html 代码进行一些更改。但还是一样。你能提供一些关于css样式部分的指南吗? 【参考方案1】:

我最近的任务是实现一个类似于 Google Analytics(分析)中的日期范围选择器。经过一番搜索,我发现this JQueryUI widget 效果很好,并且可以使用JQueryUI's ThemeRoller 轻松设置样式。

除非您正在学习或练习,否则使用现有代码、资产和库几乎总是最佳选择。正因为如此,“不要重新发明***”和“站在巨人的肩膀上”这句话往往会在教室和演讲厅里被扔掉!

【讨论】:

我以前试过。但它似乎与另一个日期输入有冲突。【参考方案2】:

请看下面的例子,我修改了你的代码..

$(function() 
    $( "#from" ).datepicker(
      defaultDate: "+1w",
      changeMonth: true,
      numberOfMonths: 1,
      onClose: function( selectedDate ) 
        $( "#to" ).datepicker( "option", "minDate", selectedDate );
      
    );
    $( "#to" ).datepicker(
      defaultDate: "+1w",
      changeMonth: true,
      numberOfMonths: 1,
      onClose: function( selectedDate ) 
        $( "#from" ).datepicker( "option", "maxDate", selectedDate );
      
    );
  );
.wrapper
    display : inline;
    border:1px solid lightgray;
    padding:4px;
    box-shadow:inset 1px 1px 1px rgba(0,0,0,.1)

input 
    border:0;

label 
color : gray;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.3/jquery-ui.js"></script>
<link rel="stylesheet" type="text/css" href="https://code.jquery.com/ui/1.11.4/themes/ui-lightness/jquery-ui.css">
Period :  
<div class='wrapper'>
    <label for="from">from:</label>
    <input type="text" id="from" name="from">
    <label for="to">to:</label>
    <input type="text" id="to" name="to">
</div>

【讨论】:

我已经更新了我的代码。你能看看它,看看是什么问题。 修复样式.picker display: inline; border: 1px solid lightgray; padding : 4px; input border: 0; 【参考方案3】:

这是一个关于如何设置样式的示例,它创建了一个包装 #picker 元素,该元素获取阴影和边框,然后删除子边框,并将它们置于行内。

http://jsfiddle.net/truxwruj/

.picker > * 
    display:inline;
    border:0;

.picker 
    border:1px solid lightgray;
    padding:4px;
    box-shadow:inset 1px 1px 1px rgba(0,0,0,.1)

【讨论】:

我已经更新了我的代码和输出。你能看看它,看看有什么问题。谢谢 @susu 好吧,我已经更新了我的答案,以在您更改的代码中使用类而不是 ID。如果您只使用它,这会产生很好的结果 它工作并且输出是我想要得到的。谢谢:D

以上是关于日期范围选择器 html5的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Android 原生 HTML5 日期选择器上的 Chrome 变得非常慢?

HTML5 日期选择器仅在第二次点击时打开

日期范围选择器类似于 Google Analytics 日期范围选择器? [关闭]

检查 HTML5 日期选择器阴影 DOM

为 html5 原生日期选择器设置日历样式

iOS HTML5 日期选择器不接受宽度:100%;