8

What I am trying to do is set the month and year from an event calendar to Tempus Dominus datepicker. So on the main page is a big calendar, the user may change the month from November to December, and the create a new event in December.

Once the user clicks the button to enter a new event, I want to set the datepicker to that month. Per the docs on the page I access the functions with:

$('#datetimepicker').datetimepicker(FUNCTION)

To set the viewDate I need to put the date in () viewDate('11/21/2018') putting it together (I have tried a few different ways it should look something like:

$('#datetimepicker').datetimepicker(viewDate('11/21/2018'))

I have put viewDate in single quotes, tried viewDate: and a few others, with no luck. I currently have it wired to a button and hard coded the date like above for testing.

What is it that I am not understanding or doing wrong.

VincenzoC
  • 30,117
  • 12
  • 90
  • 112
MaxThrust
  • 137
  • 2
  • 2
  • 9

2 Answers2

16

I think that the right way of calling viewDate function is:

$('#datetimepicker').datetimepicker('viewDate', <value>)

where <value> is a string (compliant with format option), moment or Date value.

Anyway, I fear that the current version (5.1.2) of Tempus Dominus datetimepicker has a bug/issue and the viewDate is not notified to the component view.

If you need you can use date instead of viewDate to change component's value.

Here a live sample:

$('#datetimepicker1').datetimepicker();

$('#btnViewDate').click(function() {
  $('#datetimepicker1').datetimepicker('viewDate', moment('11/21/2018', 'MM/DD/YYYY') );
});

$('#btnDate').click(function() {
  $('#datetimepicker1').datetimepicker('date', moment('11/21/2018', 'MM/DD/YYYY') );
});
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tempusdominus-bootstrap-4@5.1.2/build/css/tempusdominus-bootstrap-4.css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/tempusdominus-bootstrap-4@5.1.2/build/js/tempusdominus-bootstrap-4.js"></script>

<div class="container">
  <div class="row form-inline">
    <div class="col-sm-6">
      <div class="form-group">
        <div class="input-group date" id="datetimepicker1" data-target-input="nearest">
          <input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker1" />
          <div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
            <div class="input-group-text"><i class="fa fa-calendar"></i></div>
          </div>
        </div>
      </div>
    </div>

    <div class="col-sm-2">
      <button type="button" class="btn btn-primary" id="btnViewDate">
        Set viewDate
      </button>
    </div>
    <div class="col-sm-2">
      <button type="button" class="btn btn-primary" id="btnDate">
        Set date
      </button>
    </div>
    
  </div>
</div>
VincenzoC
  • 30,117
  • 12
  • 90
  • 112
  • The viewdate issue is in the older versions to, going back to 5.0.1 Alpha, if I go older then i need to switch to BS3 from BS4, and a bit too deep to do that. I have tried to create the picker on the fly, and set default to what I need no luck. Also tried it through destroy with no luck. Just need to find time to finish my picker. – MaxThrust Nov 26 '18 at 16:55
  • I agree with you, going back to bootstrap 3 it's too much. I've opened [this](https://github.com/tempusdominus/core/issues/13) issue on github to keep track of the problem, hopefully the mantainer of the library will fix it. – VincenzoC Nov 27 '18 at 08:25
  • Using 'date' worked for me with Tempus Dominus 4. – RoastBeast Sep 06 '22 at 02:16
0

In the new version of tempus-dominus they are using class now ex :

options: object of the configurations

new tempusDominus.TempusDominus(document.getElementById('datetimepicker1'),options);

So to change the value you should use setValue function

instance: instance of TempusDominus class

instance.setValue("2023-04-04")

they are more function to deal with tempusDominus datetimepicker like :

getviewDate : Returns a moment variable with the currently

setviewDate : opposit of getviewDate

updateOptions : Update the picker options. If reset is provide options will be merged with DefaultOptions instead. ex :

let  options = {
                        display: {
                            components: {
                                calendar: true,
                                date: true,
                                month: true,
                                year: true,
                                decades: true,
                                clock: true,
                                hours: true,
                                minutes: true,
                                seconds: true
                            }
                        },
                        localization: {
                            format: 'yyyy/MM/dd HH:mm:ss'
                        }
                    };




instance.updateOptions(options);

more function TempusDominus repository

Ayoub ait
  • 163
  • 2
  • 4