Откройте jQuery Datepicker, нажав на изображение без поля ввода
Я хочу, чтобы jQuery Datepicker был открыт, когда пользователь нажимает на изображение. Там нет поля ввода, где выбранная дата появляется после этого; я просто собираюсь сохранить введенную дату на сервер через Ajax.
в настоящее время у меня есть этот код:
<img src='someimage.gif' id="datepicker" />
$(document).ready(function() {
$("#datepicker").datepicker({
changeMonth: true,
changeYear: true,
}).click(function() { $(this).datepicker('show'); });
});
но ничего не происходит когда я нажимаю на изображение. Я также попытался сохранить результат вызова datepicker() в глобальный var, а затем вызвать datepicker ('show') из события onclick () изображения, но тот же результат.
8 ответов:
оказывается, что простое скрытое поле ввода выполняет эту работу:
<input type="hidden" id="dp" />
а затем использовать атрибут buttonImage для вашего изображения, как обычно:
$("#dp").datepicker({ buttonImage: '../images/icon_star.gif', buttonImageOnly: true, changeMonth: true, changeYear: true, showOn: 'both', });
сначала я попробовал поле ввода текста, а затем указать
display:none
стиль, но это вызвало календарь, чтобы выйти из верхней части браузера, а не от того, где пользователь нажал. Но скрытое поле работает по желанию.
в документации jQuery говорится, что datePicker должен быть прикреплен к SPAN или DIV, когда он не связан с полем ввода. Вы могли бы сделать что-то вроде этого:
<img src='someimage.gif' id="datepickerImage" /> <div id="datepicker"></div> <script type="text/javascript"> $(document).ready(function() { $("#datepicker").datepicker({ changeMonth: true, changeYear: true, }) .hide() .click(function() { $(this).hide(); }); $("#datepickerImage").click(function() { $("#datepicker").show(); }); }); </script>
Если вы используете поле ввода и иконку (как в этом примере):
<input name="hasta" id="Hasta" type="text" readonly /> <a href="#" id="Hasta_icono" ></a>
вы можете прикрепить datepicker к своему значку (в моем случае внутри тега A через CSS) следующим образом:
$("#Hasta").datepicker(); $("#Hasta_icono").click(function() { $("#Hasta").datepicker( "show" ); });
изменить "..."когда мышь нависает над значком календаря, вам нужно добавить следующее в опции datepicker:
showOn: 'button', buttonText: 'Click to show the calendar', buttonImageOnly: true, buttonImage: 'images/cal2.png',
HTML:
<div class="CalendarBlock"> <input type="hidden"> </div>
код:
$CalendarBlock=$('.CalendarBlock'); $CalendarBlock.click(function(){ var $datepicker=$(this).find('input'); datepicker.datepicker({dateFormat: 'mm/dd/yy'}); $datepicker.focus(); });
наличие скрытого поля ввода приводит к проблемам с позиционированием диалога datepicker (диалог горизонтально центрирован). Вы можете изменить поле диалога, но есть лучший способ.
просто создайте поле ввода и" скройте " его, установив его непрозрачность на 0 и сделав его шириной 1px. Также расположите его рядом (или под) кнопкой, или где бы вы ни хотели, чтобы появился datepicker.
затем прикрепите datepicker к "скрытому" полю ввода и покажите его, когда пользователь нажимает кнопка.
HTML:
<button id="date-button">Show Calendar</button> <input type="text" name="date-field" id="date-field" value="">
CSS:
#date-button { position: absolute; top: 0; left: 0; z-index: 2; height 30px; } #date-field { position: absolute; top: 0; left: 0; z-index: 1; width: 1px; height: 32px; // height of the button + a little margin opacity: 0; }
JS:
$(function() { $('#date-field').datepicker(); $('#date-button').on('click', function() { $('#date-field').datepicker('show'); }); });
Примечание: не тестируется со всеми браузерами.
$(function() { $("#datepicker").datepicker({ //showOn: both - datepicker will come clicking the input box as well as the calendar icon //showOn: button - datepicker will come only clicking the calendar icon showOn: 'button', //you can use your local path also eg. buttonImage: 'images/x_office_calendar.png' buttonImage: 'http://theonlytutorials.com/demo/x_office_calendar.png', buttonImageOnly: true, changeMonth: true, changeYear: true, showAnim: 'slideDown', duration: 'fast', dateFormat: 'dd-mm-yy' }); });
приведенный выше код принадлежит этой ссылке
<img src='someimage.gif' id="datepicker" /> <input type="hidden" id="dp" /> $(document).on("click", "#datepicker", function () { $("#dp").datepicker({ dateFormat: 'dd-mm-yy', minDate: 'today'}).datepicker( "show" ); });
вы просто добавляете этот код для щелчка изображения или любого другого события нажатия html-тега. Это делается путем запуска функции datepicker, когда мы нажимаем на курок.