Я использую средство выбора даты jQuery для отображения календаря во всем приложении. Я хочу знать, могу ли я использовать его для отображения месяца и года (май 2010), а не календаря?
374
Я использую средство выбора даты jQuery для отображения календаря во всем приложении. Я хочу знать, могу ли я использовать его для отображения месяца и года (май 2010), а не календаря?
Ответы:
Вот хак (обновленный с помощью всего файла .html):
РЕДАКТИРОВАТЬ jsfiddle для приведенного выше примера: http://jsfiddle.net/DBpJe/7755/
РЕДАКТИРОВАТЬ 2 Добавляет значение месяца и года в поле ввода только после нажатия кнопки «Готово». Также позволяет удалить значения из поля ввода, что невозможно в поле выше http://jsfiddle.net/DBpJe/5103/
РЕДАКТИРОВАТЬ 3 обновление лучшего решения на основе решения Rexwolf вниз.
http://jsfiddle.net/DBpJe/5106
источник
$(this).val($.datepicker.formatDate('MM yy', new Date(year, month, 1)));
#ui-datepicker-div.noCalendar .ui-datepicker-calendar, #ui-datepicker-div.noCalendar .ui-datepicker-header a {display: none;} #ui-datepicker-div.noCalendar .ui-datepicker-header .ui-datepicker-title{width: 100%; margin: 0;}
И затем использовать Javascript для манипулирования поведением:$("#ui-datepicker-div").addClass('noCalendar');
Этот код работает для меня безупречно:
Выход:
источник
@ Бен Келер , это префект! Я сделал небольшую модификацию, так что использование одного экземпляра выбора даты более одного раза работает, как и ожидалось. Без этого изменения дата анализируется неправильно, а ранее выбранная дата не выделяется.
источник
Приведенные выше ответы довольно хороши. Моя единственная жалоба заключается в том, что вы не можете очистить значение после его установки. Также я предпочитаю подход extension-jquery-like-a-plugin.
Это прекрасно работает для меня:
Затем вызовите так:
источник
Это решит проблему =) Но я хотел время отформатировать гггг-мм
Только попробовал в FF4, хотя
источник
У меня была такая же потребность сегодня, и я нашел ее на github, работает с jQueryUI и в календаре вместо календаря выбирается месяц.
https://github.com/thebrowser/jquery.ui.monthpicker
источник
Вот что я придумал. Он скрывает календарь, не нуждаясь в дополнительном блоке стилей, и добавляет кнопку очистки, чтобы решить проблему невозможности очистки значения после нажатия на ввод. Также хорошо работает с несколькими сборщиками месяцев на одной странице.
HTML:
JavaScript:
источник
Мне нужно было выбрать месяц / год для двух полей (From & To), и когда одно из них было выбрано, Max / Min было установлено на другое ... а-ля выбираются даты авиабилетов. У меня были проблемы с настройкой max и min ... даты другого поля будут удалены. Благодаря нескольким из вышеперечисленных постов ... я наконец понял это. Вы должны установить параметры и даты в очень конкретном порядке.
Посмотрите эту скрипку для полного решения: Выбор месяца / года @ JSFiddle
Код:
Также добавьте это в блок стиля, как упомянуто выше:
источник
Я объединил многие из вышеупомянутых хороших ответов и пришел к этому:
Это доказало свою работоспособность, но столкнулось со многими ошибками, поэтому я был вынужден установить патч в нескольких местах:
patch1: в _showDatepicker: чтобы сгладить шкуру;
patch2: in _checkOffset: исправить положение выбора месяца (в противном случае, когда поле находится внизу браузера, проверка смещения отключена);
patch3: inClose of _hideDatepicker: в противном случае при закрытии поля даты будут мигать в течение очень короткого периода, что очень раздражает.
Я знаю, что мое исправление было далеко не хорошим, но пока оно работает. Надеюсь, поможет.
источник
Добавьте еще одно простое решение
http://jsfiddle.net/tmnasim/JLydp/
Особенности :
------------------------------------
еще одно решение, которое работает хорошо для datepicker и monthpicker на одной странице: (также избегайте ошибки многократного нажатия на предыдущую кнопку в IE, которая может возникнуть, если мы используем функцию фокуса)
Ссылка JS fiddle
источник
Это только у меня так или не работает как должно в IE (8)? Дата изменяется при нажатии кнопки «Готово», но средство выбора даты открывается снова, пока вы фактически не щелкнете где-нибудь на странице, чтобы потерять фокус на поле ввода ...
Я ищу решение этой проблемы.
источник
Если вы ищете средство выбора месяца, попробуйте этот jquery.mtz.monthpicker
Это сработало для меня хорошо.
источник
Как и многие другие, я столкнулся с многочисленными проблемами, пытаясь это сделать, и только комбинация опубликованных решений и, в конечном итоге, большой взлом, чтобы сделать его идеальным, дали мне решение.
Проблемы с другими решениями в этой теме, которые я пробовал:
Я наконец-то нашел способ исправить все эти проблемы . Первые четыре можно исправить, просто следя за тем, как вы ссылаетесь на сборщиков дат и месяцев в их внутреннем коде, и, конечно, проводите ручное обновление ваших сборщиков. Это вы можете увидеть в примерах реализации в нижней части. Пятой проблеме можно помочь, добавив некоторый пользовательский код в функции DatePicker.
НОТА: Вам НЕ нужно использовать следующие сценарии выбора месяца, чтобы исправить первые три проблемы обычного средства выбора даты. Просто используйте скрипт создания даты в нижней части этого поста.
Теперь, чтобы использовать сборщики месяцев и исправить последнюю проблему, нам нужно разделить сборщики данных и сборщики месяцев. Мы могли бы получить одно из немногих аддонов для ежемесячного выбора jQuery-UI, но некоторым не хватает гибкости / способности локализации, некоторым не хватает поддержки анимации ... так что же делать? Бросьте свой "собственный" из кода datepicker! Это дает вам полностью функционирующее средство выбора месяца со всеми функциями средства выбора даты, без отображения дней.
Я поставил js-скрипт для месячного выбора и соответствующий CSS-скрипт , используя метод, описанный ниже, с кодом jQuery-UI v1.11.1. Просто скопируйте эти фрагменты кода в два новых файла, monthpicker.js и monthpicker.css соответственно.
Если вы хотите прочитать о довольно простом процессе, с помощью которого я преобразовал средство выбора даты в средство выбора месяца, прокрутите вниз до последнего раздела.
Теперь, чтобы добавить даты и месяцы на страницу!
Эти следующие фрагменты кода javascript работают с несколькими сборщиками дат и / или сборщиками месяцев на странице без вышеупомянутых проблем! Исправлено, как правило, с помощью '$ (this).' много :)
Первый скрипт предназначен для обычного средства выбора даты, а второй - для «нового» средства выбора месяца.
Вне прокомментировал .after , который позволяет создавать какой - то элемент , чтобы очистить поле ввода-, украден от ответа Пол Ричардс.
Я использую формат «MM yy» в моем месячном средстве выбора и формат «yy-mm-dd» в моем указателе даты, но он полностью совместим со всеми форматами , поэтому вы можете использовать любой, какой захотите. Просто измените параметр dateFormat. Стандартные параметры 'showButtonPanel', 'showAnim' и 'yearRange', конечно, являются необязательными и настраиваются в соответствии с вашими пожеланиями.
Добавление указателя даты
Datepicker экземпляр. Этот идет от 90 лет назад и до наших дней. Это поможет вам сохранить правильность поля ввода, особенно если вы установите параметры defaultDate, minDate и maxDate, но может справиться с этим, если вы этого не сделаете. Он будет работать с любым форматом даты, который вы выберете.
Добавление месяца
Включите файл monthpicker.js и файл monthpicker.css на страницу, которую вы хотите использовать.
Создание экземпляра Monthpicker Значение, полученное из этого месяца, всегда является ПЕРВЫМ днем выбранного месяца. Начинается с текущего месяца и варьируется от 100 лет назад до 10 лет в будущем.
Это оно! Это все, что вам нужно, чтобы сделать ежемесячный сборщик.
Я не могу заставить jsfiddle работать с этим, но он работает для меня в моем проекте ASP.NET MVC. Просто сделайте то, что вы обычно делаете, чтобы добавить средство выбора даты на свою страницу и включить вышеупомянутые сценарии, возможно, изменив селектор (то есть $ ("# MyMonthTextBox")) на то, что вам подходит.
Я надеюсь, что это помогает кому-то.
Ссылки на pastebins для некоторых дополнительных настроек даты и месяца:
Monthpicker работает в последний день месяца . Дата, которую вы получаете от этого месяца, всегда будет последним днем месяца.
Два сотрудничающих сборщика месяцев ; «start» работает с первым месяцем, а «end» работает с последним месяцем. Они оба ограничены друг другом, поэтому выбор месяца в конце, предшествующего выбранному месяцу в начале, изменит начало на тот же месяц, что и конец. И наоборот. ДОПОЛНИТЕЛЬНО: При выборе месяца для «начала» значение «minDate» для «конца» устанавливается на этот месяц. Чтобы удалить эту функцию, закомментируйте одну строку в onClose (прочитайте комментарии).
Два сотрудничающих сборщика даты ; Они оба ограничены друг другом, поэтому выбор даты в конце, предшествующей выбранной дате начала, изменит начало на тот же месяц, что и конец. И наоборот. ДОПОЛНИТЕЛЬНО: При выборе даты «начало», «minDate» на «конец» устанавливается на эту дату. Чтобы удалить эту функцию, закомментируйте одну строку в onClose (прочитайте комментарии).
Как я изменил DatePicker, чтобы стать MonthPicker
Я взял весь код javascript из jquery-ui-1.11.1.js, относящийся к их средству выбора даты, вставил его в новый js-файл и заменил следующие строки:
Затем я удалил часть цикла for, которая создает весь div ui-datepicker-calendar (div, который другие решения скрывают с помощью CSS). Это можно найти в функции _generateHTML: (inst).
Найдите строку, которая говорит:
Отметьте все, начиная с закрывающего тега div и вплоть до (и не включая) строки, где написано:
Теперь это будет несчастным, потому что нам нужно закрыть некоторые вещи. После этого закрывающего тега div добавьте следующее:
Код теперь должен быть красиво соединен вместе. Вот фрагмент кода, показывающий, чем вы должны были закончить:
Затем я скопировал / вставил код из jquery-ui.css, относящийся к указателям даты, в новый CSS-файл и заменил следующие строки:
источник
после поиска jQueryUI.com для DatePicker, вот мой вывод и ответ на ваш вопрос.
Во-первых, я бы сказал нет на ваш вопрос. Вы не можете использовать jQueryUI DatePicker только для выбора месяца и года. Не поддерживается У него нет функции обратного вызова для этого.
Но вы можете взломать его, чтобы отображать только месяц и год, используя css, чтобы скрыть дни и т. Д. И я думаю, что это не имеет смысла, потому что вам нужно нажимать на даты, чтобы выбрать дату.
Я могу сказать, что вы просто должны использовать другой сборщик дат. Как то, что предложил Роджер.
источник
У меня была проблема выбора даты, смешанного с выбором месяца. Я решил это так.
источник
Если кто-то хочет это также для нескольких календарей, добавить эту функциональность все же в интерфейс jquery не очень сложно. с минимизированным поиском:
добавить это перед х
ищи
и заменить его на
также искать
заменить его на
для CSS вы должны использовать:
после этого все будет сделано, просто перейдите к нужным вам функциям инициализации datepicker и предоставьте настройки var
justMonth: true
ключ здесь :)источник
Что о: http://www.mattkruse.com/javascript/calendarpopup/
Выберите пример выбора месяца
источник
Сделал пару уточнений почти идеального ответа BrianS выше:
Я повторно определила значение, установленное на show, потому что я думаю, что в действительности это делает его немного более читабельным (хотя обратите внимание, что я использую немного другой формат)
Мой клиент не хотел иметь календарь, поэтому я добавил добавление класса «показать / скрыть», чтобы сделать это, не затрагивая другие средства выбора даты. Удаление класса выполняется по таймеру, чтобы избежать повторного всплеска таблицы при исчезновении средства выбора даты, что, по-видимому, очень заметно в IE.
РЕДАКТИРОВАТЬ: остается одна проблема, которую нужно решить, это то, что нет способа очистить указатель даты - очистите поле и щелкните, и он снова заполнится выбранной датой.
РЕДАКТИРОВАТЬ 2: Мне не удалось решить это красиво (т.е. без добавления отдельной кнопки Очистить рядом с входом), поэтому в конечном итоге просто использовать это: https://github.com/thebrowser/jquery.ui.monthpicker - если кто-то может получить стандартный пользовательский интерфейс, чтобы сделать это, что было бы удивительно.
Вам также нужно это правило стиля:
источник
Мне понравился ответ @ user1857829 и его подход "extend-jquery-like-a-plugin". Я просто сделал небольшую модификацию, чтобы при любом изменении месяца или года сборщик действительно записывал дату в поле. Я обнаружил, что я хотел бы такое поведение после его использования немного.
источник
У меня были определенные трудности с принятым ответом, и никто другой не мог быть использован с минимальными усилиями в качестве основы. Итак, я решил настроить последнюю версию принятого ответа, пока он не будет соответствовать хотя бы минимальным стандартам кодирования / повторного использования JS.
Вот способ решения гораздо чище , чем третий (последний) выпуск из Ben Koehler общепринятом ответ «s. Более того, оно будет:
mm/yy
форматом, но и с любым другим, включая OPMM yy
.datestr
,month
, иyear
т.д. переменные.Проверьте это:
И все остальное, что вам нужно, это следующий CSS:
Вот и все. Надеюсь, что выше сэкономит время для дальнейших читателей.
источник
Я знаю, что это немного запоздалый ответ, но у меня возникла та же проблема пару дней назад, и я нашел хорошее и плавное решение. Сначала я нашел этот отличный сборщик дат здесь
Затем я только что обновил класс CSS (jquery.calendarPicker.css), который поставляется с примером, подобным этому:
Плагин запускает событие DateChanged, когда вы что-то меняете, поэтому не имеет значения, что вы не нажимаете на день (и он подходит как средство выбора года и месяца)
Надеюсь, поможет!
источник
Мне также нужен был сборщик месяцев. Я сделал простую с годом на заголовке и 3 рядами 4 месяца ниже. Проверьте это: Простой месячный сборщик с jQuery .
источник
Я попробовал различные решения, представленные здесь, и они отлично работали, если вы просто хотели пару выпадающих.
Лучший (по внешнему виду и т. Д.) Сборщик ( https://github.com/thebrowser/jquery.ui.monthpicker ), предлагаемый здесь, в основном представляет собой копию старой версии средства выбора даты jquery-ui с переписанным _generateHTML. Однако я обнаружил, что он больше не работает с текущим jquery-ui (1.10.2) и имел другие проблемы (не закрывается при esc, не закрывается при открытии других виджетов, имеет жестко запрограммированные стили).
Вместо того, чтобы пытаться исправить этот месяц и вместо того, чтобы повторить попытку того же самого процесса с последним сборщиком дат, я пошел с подключением к соответствующим частям существующего выбора даты.
Это включает переопределение:
Поскольку этот вопрос немного устарел и уже хорошо ответил, вот только переопределение _selectDay, чтобы показать, как это было сделано:
Как уже говорилось, это старый вопрос, но я нашел его полезным, поэтому хотел добавить обратную связь с альтернативным решением.
источник
для средства выбора месяца, используя JQuery v 1.7.2, у меня есть следующий javascript, который делает именно это
$l("[id$=txtDtPicker]").monthpicker({
showOn: "both",
buttonImage: "../../images/Calendar.png",
buttonImageOnly: true,
pattern: 'yyyymm', // Default is 'mm/yyyy' and separator char is not mandatory
monthNames: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']
});
источник
Спасибо за решение Бена Келера.
Однако у меня была проблема с несколькими экземплярами сборщиков дат, причем некоторые из них требовались при выборе дня. Решение Бена Келера (в редакции 3) работает, но скрывает выбор дня во всех случаях. Вот обновление, которое решает эту проблему:
источник
Воспользуйтесь
onSelect
обратным вызовом, удалите часть года вручную и установите текст в поле вручнуюисточник