jQuery datepicker устанавливает выбранную дату "на лету"

StackOverflow https://stackoverflow.com/questions/606463

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

//Set DatePicker to October 3, 2008
$('#dateselector').datepicker("setDate", new Date(2008,9,03) );

Другие советы

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

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

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

Отметил это для DatePicker от 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')***
    });

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

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

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
$('.date-pick').datePicker().val(new Date()).trigger('change')

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

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

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

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

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

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

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

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

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

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

удачи вам!

В Html вы можете добавить свое поле ввода с помощью средства выбора даты, подобного этому

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

а затем в Java script инициализируйте свой datepicker и установите значение даты следующим образом,

$('.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 показывает предыдущие даты текущей даты)

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

$('.date-pick').datePicker().val(new Date()).trigger('change')
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top