date range picker html5

29,445

Solution 1

I was recently tasked with implementing a date range picker similar to the one in Google Analytics. After a bit of searching around I found this JQueryUI widget that works very well, and can be styled easily using JQueryUI's ThemeRoller.

Unless you're learning or practising, then using existing code, assets and libraries is almost always the best option. The phrases "Don't reinvent the wheel" and "Standing on the shoulders of giants" tend to get tossed around in classrooms and lecture halls for this very reason!

Solution 2

Here is an example on how you can style it, its creates a wrapping #picker element that gets the shadow and border, then removes the childrens borders, and puts them in-line.

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)
}

Solution 3

Please see the below example, I modified your code ..

$(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>
Share:
29,445
susu
Author by

susu

Try your best, Do your best, Code your best, Learn your best.

Updated on September 27, 2020

Comments

  • susu
    susu over 3 years

    I wanted to come out with a date range picker where shows in picture below. ideal output

    Here is my updated code that I doing now and the output I have it now.

    $(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>

    Here is my output based on the code. output

  • susu
    susu over 8 years
    i have update my code . can you look at it see what is the problem.
  • susu
    susu over 8 years
    i have update my code and output. can you look at it and see what is the problem. thanks
  • susu
    susu over 8 years
    i have try it previously. but it seem like having conflict with another date input.
  • BobbyTables
    BobbyTables over 8 years
    @susu well, i have updated my answer to use a class instead of ID as in your changed code. This gives a nice result if you just use it
  • Kishore Sahasranaman
    Kishore Sahasranaman over 8 years
    Fix the styles .picker { display: inline; border: 1px solid lightgray; padding : 4px; } input { border: 0; }
  • susu
    susu over 8 years
    it work and output is what i want to get it. thanks :D