jQuery 'setDate' = null уходит сегодня как currentDate - PullRequest
0 голосов
/ 19 марта 2010

У меня есть два сборщика даты. Когда они впервые отображаются на странице, максимальные и минимальные значения для диапазона устанавливаются на сегодня, поэтому даты не могут быть выбраны. На основе выпадающего списка допустимые диапазоны дат устанавливаются в обоих календарях. Я хочу, чтобы СЕГОДНЯ была выбранной по умолчанию датой в датчике TO и в датчике FROM, и я бы ничего не выбрал. Я добавил немного CSS, чтобы выделить СЕГОДНЯ, как если бы это была любая другая выбранная дата. На данный момент все хорошо в календаре ТО. В календаре ОТ, однако, СЕГОДНЯ отображается так, как если бы оно было выбрано, но в действительности на данный момент дата не выбрана. Похоже, проблема заключается в том, что даже если вы установите для даты указатель даты на «null», сегодняшняя дата все равно будет помечена как ui-datepicker-current-date, а также ui-datepicker-today. У меня нет проблем с тем, чтобы он был помечен как ui-datepicker-today, потому что, ну, в конце концов, он есть сегодня. Так как он также помечен как ui-datepicker-current-date, у меня нет возможности дифференцировать невыбранную дату в календаре TO с той, которая фактически была выбрана пользователем.

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

Я могу опубликовать точный код завтра, если вы полностью потерялись. Это на работе, и я сейчас занимаюсь исследованиями дома. Заранее благодарим за любую помощь, которую вы можете предложить!

1 Ответ

0 голосов
/ 19 марта 2010

Теперь, когда я потратил на это гораздо больше времени, чем планировал, я поделюсь своим окончательным решением.

Я все еще не рад тому факту, что datePicker помечает сегодня как текущую выбранную дату, фактически не давая вам иметь DatePicker без выбранной даты, но мне все равно пришлось заставить его работать. Вот CSS, который я добавил, вы можете включить его как отдельный файл или как вам угодно, если он идет после CSS-темы jquery:

.ui-datepicker-current-day .ui-state-active { border: 1px solid #000; background: #bebbbb url(images/ui-bg_glass_65_bebbbb_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; }

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

$("#nameOfDatePickerDiv").find("td.ui-datepicker-current-day").find("a:first-child").removeClass('ui-state-active');

Прежде всего, это делается после установки допустимого диапазона и до того, как пользователю будет разрешено сделать выбор самостоятельно. Я нахожу текущий день td, нахожу первый и единственный a и лишаю его активности. Теперь у вас есть календарь с текущим днем, по умолчанию на сегодня, но он не обманывает пользователя, заставляя его думать, что он был выбран заранее. Как только они сделают выбор самостоятельно, к этой дате будет добавлен класс ui-state-active. С обновленным стилем и без этого JS сегодня всегда будет выглядеть так, как если бы он был предварительно выбран.

Если кто-нибудь найдет лучший способ, не стесняйтесь делиться. Я потратил слишком много времени на это и не удивился бы, если бы пропустил что-то более очевидное.

...