Wie kann der Datumswert des Bootstrap-Datepickers dynamisch festgelegt werden?


76

Ich benutze Bootstrap Datepicker zusammen mit einem Line Highchart.

Ich möchte, dass das Datum der Datumsauswahl aktualisiert wird, wenn das Diagramm gezoomt wird. Sobald dieses Ereignis ausgelöst wird, aktualisiere ich die Werte des Datepickers. Die Werte werden problemlos aktualisiert, aber wenn auf den Kalender geklickt wird, ist das Datum im Popup-Kalender immer noch das alte Datum.

Hier ist mein Datepicker:

<div class="input-append date pull-right" id="dpStartDate" data-date="@DateTime.Now.AddMonths(-1).ToString("dd/MM/yyyy")" data-date-format="dd/mm/yyyy">
    <input class="span2" id="startDateText" size="16" type="text" value="@DateTime.Now.AddMonths(-1).ToString("dd/MM/yyyy")" readonly="">
    <span class="add-on"><i class="icon-th"></i></span>
</div>

Ich habe versucht, nur die Werte mit diesem Code zu aktualisieren:

$('#dpStartDate').attr('data-date', startDate);
$('#startDateText').attr('value', startDate);

Dadurch werden die Daten in Ordnung aktualisiert, der Kalender wird jedoch nicht festgelegt.

Ich habe auch versucht, das Ereignis onChange auszulösen, bei dem auch die Daten, jedoch nicht der Kalender aktualisiert werden:

$('#dpStartDate').trigger('changeDate', startDate);

$('#dpStartDate').datepicker()
    .on('show', function (ev) {
        ev.stopPropagation();
    })
    .on('changeDate', function (ev, date) {
        var startDate = new Date();
        if (date != undefined) {
            startDate = date;
            $('#dpStartDate').attr('data-date', startDate);
            $('#startDateText').attr('value', startDate);
        }
        else {
            startDate = ev.date;
            $('#dpStartDate').attr(startDate.getDate() + '/' + (startDate.getMonth() + 1) + '/' + startDate.getFullYear());
            $('#startDateText').attr(startDate.getDate() + '/' + (startDate.getMonth() + 1) + '/' + startDate.getFullYear());
        }
        $('#dpStartDate').datepicker('hide');
        ev.stopPropagation();
    });

Weiß jemand, ob es überhaupt möglich ist, den Kalender so zu aktualisieren?

Vielen Dank

Antworten:


71

Das funktioniert bei mir

$(".datepicker").datepicker("update", new Date());

5
Dies funktioniert, aber es bricht das Format, wenn Sie es deklariert haben html. Wie, wenn Format ist "dd.mm.yyyy", beim Aktualisieren wie dieses Ergebnis datetimedes Formats "mm/dd/yyyy". Gibt es eine Problemumgehung dafür?
Javidan

1
@Javidan Ich habe nicht getestet, aber vielleicht könnten Sie in einem Moment js Datum übergeben und dann das Format angeben.
Pusle

1
Beachten Sie, dass datepicker! = datetimepicker.
Candlejack

@Javidan Das Format wird nicht unterbrochen, wenn Sie data-date-format = "TT / MM / JJJJ" verwenden, z. B. <input type = 'text' name = "myDateCtrl" data-date-format = "TT / MM / JJJJ "placeholder =" Datum
auswählen

39
var startDate = new Date();

$('#dpStartDate').data({date: startDate}).datepicker('update').children("input").val(startDate);

ein anderer Weg

$('#dpStartDate').data({date: '2012-08-08'});
$('#dpStartDate').datepicker('update');
$('#dpStartDate').datepicker().children('input').val('2012-08-08');
  1. Stellen Sie das Kalenderdatum auf das Datum der Eigenschaftsdaten ein
  2. Aktualisierung erforderlich)
  3. Stellen Sie den Eingabewert ein (denken Sie daran, dass die Eingabe dem Datepicker untergeordnet ist).

Auf diese Weise setzen Sie das Datum auf '2012-08-08'


3
Können Sie Ihrem Code-Snippet eine kleine Erklärung hinzufügen? :)
Asteri

3
Warum wartet der Datepicker nicht auf Änderungen in der Texteingabe und tut dies selbst?
Drogon

4
... und dieser Code funktioniert nicht, dieser Code funktioniert $ ('# dpStartDate'). datepicker ('update', '2012-08-08');
Drogon

Wie kann das Datumsformat nach dem Update-Aufruf festgelegt werden? zB Wert, den ich festgelegt habe, ist "2012-08-12 06:05:04"und ich möchte das Format nach dem Update festlegen "12/08/2012 06:05:04"? Ist es möglich wie? Mein Code:$('#start').datepicker("setValue", "2014-08-08 6:05:04" ); $("$start").datepicker("update"); $("#start").datetimepicker({format: 'dd/mm/yyyy hh:ii', language: 'fr', autoclose: true, todayBtn: true});
Ashwin Parmar

Nach dem Festlegen des Datumswerts, wenn ich auf die Datumsauswahl klicke, werden Datum und Monat angezeigt, aber das Jahr begann mit "1989". Ich weiß nicht warum?
Ashwin Parmar

27
$("#datepicker").datepicker("setDate", new Date);

1
ist es nicht nur für Jquery? Funktioniert es auch mit Bootstrap Datepicker?
Erlan

11

Besser zu verwenden:

$("#datepicker").datepicker("setDate", new Date); 

anstatt

$("#datepicker").datepicker("update", new Date);

Wenn Sie update verwenden, wird event changeDate nicht ausgelöst.


10

Versuchen Sie diesen Code,

$(".endDate").datepicker({
    format: 'dd/mm/yyyy',
    autoclose: true
}).datepicker("update", "10/10/2016"); 

Dadurch wird das Datum aktualisiert und das Format dd/mm/yyyyangewendet.


9

Das funktioniert bei mir,

$('#datepicker').datepicker("setValue", '01/10/2014' );
$('#datepicker').datepicker("setValue", new Date(2008,9,03));

Ja das war es von mir! Ich bin nicht sicher, warum das Datumsformat nicht funktioniert, aber das formatierte Datum funktioniert, indem der UI-Wert festgelegt und das Datum im Kalender-Popup vorgewählt wird. Das Datumsobjekt funktioniert nicht, um das Kalender-Popup für mich selbst festzulegen.
Timothy Gonzalez

4

Ich musste 'setValue' und 'update' ausführen, damit es vollständig funktioniert

$('#datepicker').datepicker('setValue', '2014-01-29').datepicker('update');

2
Ich habe es von der Konsole aus versucht. es funktioniert nicht. $ ('# start'). datepicker ('setValue', '2014-01-29'). datepicker ('update');
Ashwin Parmar

Welche Bootstrap-Version verwenden Sie @AshwinParmar? Ich benutze Bootstrap v4.
Etwas am

3

Das funktioniert wirklich.

Einfach,

Einfach zu verstehen,

Einzelne Methode zum Einstellen und Aktualisieren des Plugins, die für mich funktioniert hat.

$(".datepicker").datepicker("update", new Date());

Andere Möglichkeiten zum Aktualisieren

$('.datepicker').data({date: '2015-01-01'});
$('.datepicker').datepicker('update');

Vergessen Sie nicht, updatemanuell anzurufen .


10
Dies ist genau das Gleiche wie die Antwort von @ Imran. Sie haben einer Antwort, die bereits fast 5 Monate vor Ihrer Antwort existiert hat, nichts hinzugefügt .
Michel Ayres

1
Kein Problem, ich muss mich nicht dafür entschuldigen. In diesem Fall können Sie die bereits vorhandene Antwort jederzeit abstimmen. Aber Ihre Antwort ist richtig, es ist nur eine "Kopie" von + Imran und ich wollte nur darauf hinweisen
Michel Ayres

3
Sollte diese Antwort nicht als Duplikat gelöscht werden?
Eirikir

3

Für Bootstrap 4

Wenn Sie eine Eingabegruppe in Bootstrap verwenden, müssen Sie das neue Datum an das übergeordnete Element des Textfelds anhängen. Andernfalls wird das Datum gelöscht, wenn Sie auf das Kalendersymbol klicken und außerhalb des Datums klicken.

<div class="input-group date" id="my-date-component">
   <input type="text" />
    <div class="input-group-append">
      <span class="input-group-text"><i class="fa fa-calendar"></i></span>
    </div>
</div>

Sie müssen das Datum auf einstellen input-group.date.

$('#my-date-component').datepicker("update", new Date("01/10/2014"));

Prüfen Sie auch , datepicker Update - Methode


3

Wenn Sie die Methoden anderer Antworten verwenden, gehen die konfigurierten Optionen verloren. Um dies zu korrigieren, können Sie eine globale Konfiguration verwenden:

$('.datepicker').datepicker();
$.fn.datepicker.defaults.format = 'dd/mm/yyyy';
$.fn.datepicker.defaults.startDate = "0";
$.fn.datepicker.defaults.language = "es";
$.fn.datepicker.defaults.autoclose = true;
$.fn.datepicker.defaults.todayHighlight = true;
$.fn.datepicker.defaults.todayBtn = true;
$.fn.datepicker.defaults.weekStart = 1;

Jetzt können Sie die Aktualisierungsmethode verwenden, ohne die Optionen zu verlieren:

$(".datepicker").datepicker("update", new Date("30/11/2018"));

3

Code verwenden:

var startDate = "2019-03-12"; //Date Format YYYY-MM-DD

$('#datepicker').val(startDate).datepicker("update");

Erläuterung:

Datepicker (Eingabefeld) Selector #datepicker.

Eingabefeld aktualisieren.

Rufen Sie den Datepicker mit Optionsaktualisierung auf.


2

Für Datetimepicker verwenden Sie diese Arbeit für mich

$('#lastdate1').data({date: '2016-07-05'});
$('#lastdate1').datetimepicker('update');
$('#lastdate1').datetimepicker().children('input').val('2016-07-05');

Die einzige Antwort von hier, die für mich funktioniert hat (v1.6.4). Vielen Dank!
Geraldo

2

Beachten Sie, dass Sie beim Initiieren eines Datepickers mit einem benutzerdefinierten Format das einfache Zeichenfolgendatum als zweites Argument übergeben können. Dies spart einige Zeilen.

$('.selector').datepicker({
    format:'dd/mm/yyyy',
});

$('.selector').datepicker('update', '13/09/2019');

1

Einfacher Weg wie dieser (eine Zeile)

$('#startDateText').val(startDate).datepicker("update");

Während dieser Code die Frage möglicherweise beantwortet, verbessert die Bereitstellung eines zusätzlichen Kontexts darüber, warum und / oder wie dieser Code die Frage beantwortet, ihren langfristigen Wert.
Rollstuhlfahrer

1

Das funktioniert bei mir:

$('#dpStartDate').data("date", startDate);

1

$('#DateDepenseInput').val("2020-12-28")
Das Format sollte wie Jahr-Monat-Tag sein.
Es hat gut für mich funktioniert ...



0

Sie können diese einfache Methode wie folgt verwenden:

qsFromDate = '2017-05-10';
$("#dtMinDate").datepicker("setDate", new Date(qsFromDate));
$('#dtMinDate').datepicker('update');

0

Wenn Sie Bootstrap DatePicker Version 4+ verwenden

Hinweis Auf alle Funktionen wird über das Datenattribut zugegriffen, z. B. $ ('# datetimepicker'). Data ("DateTimePicker"). FUNCTION ()

Um den Datumswert einzustellen, sollten Ihre Codes wie folgt sein

$("#datetimepicker").data("DateTimePicker").date(new Date());

0

@ Imran Antwort funktioniert für Textfelder

Um den Datepicker auf ein Div anzuwenden, verwenden Sie Folgendes:

$('#div_id').attr("data-date", '1 January 2017');
$('#div_id').datepicker("update");

Komma-Delim mehrere Daten:

$('#div_id').attr("data-date", '1 January 2017,2 January 2017,3 January 2017');

0
$('#datetimepicker1').data("DateTimePicker").date('01/11/2016 10:23 AM')


0

Versuchen

$("#datepicker").datepicker('setDate','25-05-2020').datepicker('fill');

Dies funktioniert bei mir, wenn setDateder Wert des Datumsauswahl-Textfelds im Browser nicht aktualisiert wird. "Die zusätzlichen .datepicker('fill');" füllen den Bootstrap datepickerfür ein neues Datum neu, das durch die setDateMethode festgelegt wird.


0

Beim Laden der Seite, wenn Sie das changeDate-Ereignis, das ich nicht ausgelöst habe, nicht auslösen möchten

$('#calendarDatePicker').data("date", new Date());
$('#calendarDatePicker').datapicker();
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.