2010-01-20 5 views
1

Итак, я создаю приложение, в котором данные возвращаются из базы данных, где дата может быть в разных форматах, то есть '2008', '05/22/99 ',' 8/20/2004. И скажем, например, пользователь хочет изменить дату (2009), нажав кнопку «Изменить». Хорошо в окне редактирования ДОЛЖНО показать окно ввода с годом '2009', уже присутствующим в поле. Однако проблема заключается в том, что datepicker видит 2009 год, не распознает этот формат даты как значение по умолчанию и вместо этого подключается к сегодняшней дате.jQuery datepicker меняет входное значение автоматически

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

Есть ли способ остановить это поведение? Я что-то пропустил в своей настройке?

Извините, у меня нет примера в Интернете, и большое спасибо всем, у кого есть идеи о том, как преодолеть это.

Спасибо,

Джефф

+1

Это поведение по умолчанию, я считаю. что бы вы ожидали, что datepicker будет по умолчанию, если все, что ему дано, это год? 1/1/[год]? – Jason

+0

Я бы ожидал, что дампикер, однажды открывшийся, будет по умолчанию на сегодняшний день или 01/01/2009. Независимо от того, что пользователь будет легко понять.Но значение VALUE в поле ввода type = 'text' должно ОПРЕДЕЛАТЬ все, что было раньше. т.е. 2009 год и НЕ сегодняшняя дата. – Jeff

ответ

0

Вы должны использовать JQuery, чтобы установить значение текстового поля после DatePicker было присоединено в текстовое поле.

$('txtBox').datepicker(); 
$('txtBox').val('2009'); 
or 
document.getElementById('txtBox').value = '2009'; 

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

+0

Я думал то же самое, но когда я попробовал, это не сработало. Оповещение текущего значения для текстовых полей, возвращаемых «неопределенными», хотя Firebug показал «2009». Не знаю, почему ... – Jeff

1

Обычно это не изменило бы это ..

Пример на http://jqueryui.com/demos/datepicker/ не делать то, что вы описываете. Так это может быть один из вариантов, которые вы используете, или событие, вы перехваченные как OnClose ..

Покажите нам код ..

+0

Да, поведение по умолчанию не меняет значение текстового поля, пока пользователь явно не выберет дату. http://jsbin.com/aroca – Anurag

+0

Этот пример еще не имеет значения для входного текстового поля при инициализации datepicker. (Быстрый пример) базы данных генерируется HTML/таблица:

Дата: Действие
EDIT
Использование JQuery: функцию Edit (OBJ) { уаг tbody = $ (obj) .parent(). find ('td'); var editTextBox = ""; } $ ('. JDate'). Datepicker(); Теперь, когда editTextBox нарисован на другой части страницы, это значение НЕ будет тем, что я установил, но сегодняшней датой. – Jeff

+0

yikes. извините за форматирование выше ... – Jeff

1

Лучшего случай для хранения дат в базе данных в том же формате. В следующем лучшем случае переформатируйте дату либо на сервере, либо используя javascript, чтобы даты, указанные для datepicker, были в одном формате, что облегчало жизнь каждому.

Javascript имеет plenty of ways to manipulate dates.

+0

Я полностью не согласен. Лучшим случаем было бы сохранить даты, но пользователь ввел их. Если пользователь хотел сохранить дату в 2009 году, кто мы, мы должны сказать, что они ошибаются и отображают другую дату, чем то, что они ввели. Очевидно, хотя это делает жизнь программиста немного более расстраивающей. Но это необходимость хорошего пользовательского дизайна приложения. – Jeff

+0

Я бы согласился, если бы дата не была полностью объективной частью данных. Написание даты по-разному не имеет абсолютно никакого значения для ее значения, поэтому в этом случае хорошим «дизайном пользовательских приложений» является принятие несогласованностей и их согласование. Если вы действительно хотите справиться с этим, выбейте себя. – carillonator

0

По-видимому, эта проблема возникает после того, как параметры даты устанавливаются после инициализации исходной даты.

Эта ссылка размещена ранее работает нормально, но это не делает и иллюстрирует мою проблему: http://jsbin.com/axipe

А ошибка может быть?

Спасибо за предложения и комментарии!

Приветствие,

Джефф

0

пример оригинального Дока не обеспечивает заданное значение ввода, вот пример использование OnClose для установки значения входного сигнала. пожалуйста, проверьте jsfiddle.net/ray202/XdMkQ/

Смежные вопросы