JQuery DatePicker установить выбранную дату, на лету

115

Как я могу изменить выбранную дату jquery Date picker динамически на лету? Я сказал, что создал встроенный сборщик дат. Затем через какое-то время я хочу отразить другую дату там, не воссоздавая дампикера с нуля.

Я попробовал метод setDate, но не работал, и в doc документации не так много.

Существует еще один (расширенный?) плагин здесь, но я хочу использовать плагин, который поставляется с jquery.ui.all.js.

Теги:
datepicker

12 ответов

171
Лучший ответ

Какую версию jQuery-UI вы используете? Я проверил следующее с 1.6r6, 1.7 и 1.7.1, и он работает:

//Set DatePicker to October 3, 2008
$('#dateselector').datepicker("setDate", new Date(2008,9,03) );
  • 15
    используйте defaultDate вместо setDate, если setDate не работает.
  • 7
    но для меня это не сработало в любом случае. Дата была изменена. Но выбранная дата не появилась в календаре. это показывает мне только сегодня выделенный.
Показать ещё 1 комментарий
28

Убедитесь, что дата, которую вы пытаетесь установить, находится в пределах допустимого диапазона дат, если установлены параметры minDate или maxDate.

9

В этом примере показано, как использовать значение по умолчанию в раскрывающемся календаре и значение в текстовом поле. Он также показывает, как установить значение по умолчанию для предыдущей даты.

selectedDate - это еще одна переменная, которая содержит текущую выбранную дату календарного управления

    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);
6

Отмечено, что для DatePicker by Keith Wood (http://keith-wood.name/datepickRef.html) следующие работы - обратите внимание, что установка даты по умолчанию последней:

    $('#datepicker').datepick({
        minDate: 0,
        maxDate: '+145D',
        multiSelect: 7,
        renderer: $.datepick.themeRollerRenderer,
        ***defaultDate: new Date('1 January 2008')***
    });
5

По какой-то причине, в некоторых случаях я не мог заставить setDate работать.

Обходной путь, который я нашел, - это просто обновить атрибут value данного ввода. Конечно, сам датапикер не будет обновляться, но если вы просто ищете, чтобы отобразить дату, он отлично работает.

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
  • 5
    Выключается один на несколько месяцев, поэтому вам нужно (date.getMonth () + 1)
  • 1
    setDate не работает, если установлено в исходных параметрах, впоследствии я связал его с помощью .datepicker ('setDate', ...)
2
$('.date-pick').datePicker().val(new Date()).trigger('change')

наконец то, что я смотрю в последние несколько часов! Мне нужно инициировать изменения, а не просто установить дату в текстовом поле!

2

Это работает для меня:

$("#dateselector").datepicker("option", "defaultDate", new Date(2008,9,3));
2

setDate только кажется проблемой с встроенным datepicker, используемым в пользовательском интерфейсе jquery, особая ошибка InternalError: слишком большая рекурсия.

0

В HTML вы можете добавить поле ввода с помощью выбора даты, как это

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

а затем в java-скрипте инициализируйте свой указатель даты и установите в качестве значения дату, например,

$('.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 );

(Здесь атрибут fromdate показывает предыдущие даты текущей даты)

0

Это старый поток, но я просто хочу дать некоторую информацию, как я использовал. Если вы хотите установить сегодняшнюю дату, вы можете просто применить ее, как показано ниже.

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

Если вы хотите установить несколько дней до/после текущей даты, используйте символ -/+ того, сколько дней вы хотите, как показано ниже.

 $("#datepickerid").datepicker("setDate", "-7");
 $("#datepickerid").datepicker("setDate", "+5");
0

У меня также были проблемы с методом setDate. похоже, работает только в v1. Однако, похоже, для работы используется метод dpSetSelected:

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

Удачи!

-2

или вы можете просто

$('.date-pick').datePicker().val(new Date()).trigger('change')
  • 0
    если кто-то объяснит, что за голоса будут признательны ..
  • 1
    Это должен быть .datepicker() не .datePicker() .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню