jQuery datepicker ustawia wybraną datę w locie

121

Jak mogę dynamicznie w locie zmienić wybraną datę w selektorze dat jQuery? Powiedziałem, że stworzyłem wbudowany selektor dat. Po jakimś czasie chcę odzwierciedlić tam inną datę bez ponownego tworzenia datepicker od zera.

Próbowałem metody setDate, ale nie działa, i nie ma wiele dokumentacji w doc .

Jest jeszcze inny (inne?) Plugin tutaj , ale chcę używać wtyczki, która jest dostarczana z jquery.ui.all.js.

Sabya
źródło

Odpowiedzi:

187

Jakiej wersji jQuery-UI używasz? Przetestowałem następujące z 1.6r6, 1.7 i 1.7.1 i działa:

//Set DatePicker to October 3, 2008
$('#dateselector').datepicker("setDate", new Date(2008,9,03) );
Ben Koehler
źródło
16
użyj defaultDate zamiast setDate, jeśli setDate nie działa.
bingjie2680
8
ale dla mnie to i tak nie zadziałało. data została zmieniona, ale wybrana data nie pojawia się w kalendarzu. pokazuje mi tylko dzisiaj podświetlony.
Prageeth godage
28

Sprawdź, czy data, którą próbujesz ustawić, mieści się w dozwolonym zakresie dat, jeśli są ustawione opcje minDate lub maxDate.

cfwall
źródło
10

Ten przykład pokazuje, jak używać wartości domyślnej w rozwijanym kalendarzu i wartości w polu tekstowym. Pokazuje również, jak ustawić domyślną wartość na poprzednią datę.

selectedDate to kolejna zmienna, która przechowuje aktualnie wybraną datę kontrolki kalendarza

    var date = new Date();
    date.setDate(date.getDate() - 1);

    $("#datepicker").datepicker({
        dateFormat: "yy-mm-dd",
        defaultDate: date,
        onSelect: function () {
            selectedDate = $.datepicker.formatDate("yy-mm-dd", $(this).datepicker('getDate'));
        }
    });

    $("#datepicker").datepicker("setDate", date);
Vlad Bezden
źródło
8

Zauważyłem, że dla DatePicker autorstwa Keitha Wooda ( http://keith-wood.name/datepickRef.html ) działa następująco - pamiętaj, że ustawienie domyślnej daty jest ostatnie:

    $('#datepicker').datepick({
        minDate: 0,
        maxDate: '+145D',
        multiSelect: 7,
        renderer: $.datepick.themeRollerRenderer,
        ***defaultDate: new Date('1 January 2008')***
    });
Michael
źródło
7

Z jakiegoś powodu w niektórych przypadkach nie mogłem uruchomić setDate.

Rozwiązaniem, które znalazłem, jest po prostu zaktualizowanie atrybutu value danego wejścia. Oczywiście sam datapicker nie zostanie zaktualizowany, ale jeśli po prostu szukasz daty, działa dobrze.

var date = new Date(2008,9,3);
$("#your-input").val(date.getMonth()+"/"+date.getDate()+"/"+date.getFullYear());
// Will display 9/3/2008 in your #your-input input
Guillaume Flandre
źródło
6
Miesiącami jest przerwa o jeden, więc potrzebujesz (date.getMonth () + 1)
Adam
1
setDate nie działa, jeśli jest ustawione w początkowych opcjach, miałem go później w łańcuchu z .datepicker ('setDate', ...)
martinedwards
4
$('.date-pick').datePicker().val(new Date()).trigger('change')

wreszcie tego szukam przez ostatnie kilka godzin! Potrzebuję zainicjować zmiany, a nie tylko datę konfiguracji w polu tekstowym!

Oleksii Semeniuk
źródło
2
Powinno być .datepicker()nie.datePicker()
Arslan Tabassum
3

To jest stary wątek, ale chcę tylko podać kilka informacji, w jaki sposób korzystałem. Jeśli chcesz ustawić dzisiejszą datę, możesz po prostu zastosować ją jak poniżej.

 $("#datepickerid").datepicker("setDate", "0");

Jeśli chcesz ustawić kilka dni przed / po bieżącej dacie, użyj symbolu -/+symbolu liczby dni, które chcesz ustawić poniżej.

 $("#datepickerid").datepicker("setDate", "-7");
 $("#datepickerid").datepicker("setDate", "+5");
Suresh Ponnukalai
źródło
2

setDate wydaje się być problemem tylko z wbudowanym datepicker używanym w interfejsie użytkownika jquery, konkretnym błędem jest InternalError: za dużo rekursji.

Allen
źródło
2

To działa dla mnie:

$("#dateselector").datepicker("option", "defaultDate", new Date(2008,9,3));
Gjermund Dahl
źródło
2

W HTML możesz dodać swoje pole wejściowe za pomocą takiego selektora dat

<input class="form-control date-picker fromDates" id="myDate" type="text">

a następnie w skrypcie java zainicjuj swój datepicker i ustaw wartość na taką datę,

$('.fromDates').datepicker({
                maxDate: '0',
                dateFormat: "dd/mm/yy",
                changeYear: true,
                changeMonth: true,
                yearRange: "-100:+0"
            });

var myDateVal = moment('${value}').format('DD/MM/YYYY');
$('#myDate').datepicker().datepicker('setDate', myDateVal );

(Tutaj atrybut fromdate pokazuje poprzednie daty bieżącej daty)

chamzz.dot
źródło
0
var dt = new Date();
var renewal = moment(dt).add(1,'year').format('YYYY-MM-DD');
// moment().add(number, period)
// moment().subtract(number, period)
// period : year, days, hours, months, week...
study4u
źródło
Odpowiedzi zawierające tylko kod są odradzane w przypadku przepełnienia stosu, ponieważ nie wyjaśniają, w jaki sposób rozwiązuje problem. Edytuj swoją odpowiedź, aby wyjaśnić, co robi kod i jak odpowiada na pytanie, tak aby była przydatna również dla innych użytkowników, a także dla OP.
FluffyKitten
-1

Miałem też sporo problemów z metodą setDate. wydaje się działać tylko w v1. Wydaje się jednak, że działa metoda dpSetSelected:

    $("#dateselector").dpSetSelected(new Date(2010, 0, 26).asString());

powodzenia!

tijs
źródło
-1

lub możesz po prostu mieć

$('.date-pick').datePicker().val(new Date()).trigger('change')
Gayan
źródło
1
Powinno być .datepicker()nie .datePicker().
Florin Frătică