Откройте 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() изображения, но тот же результат.
Ответы
Ответ 1
Оказывается, что простое скрытое поле ввода выполняет задание:
<input type="hidden" id="dp" />
И затем используйте атрибут buttonImage для вашего изображения, как обычно:
$("#dp").datepicker({
buttonImage: '../images/icon_star.gif',
buttonImageOnly: true,
changeMonth: true,
changeYear: true,
showOn: 'both',
});
Сначала я попробовал текстовое поле ввода, а затем установил на нем стиль display:none
, но это вызвало появление календаря из верхней части браузера, а не от того, где пользователь нажал. Но скрытое поле работает по своему желанию.
Ответ 2
В документации 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>
Ответ 3
Если вы используете поле ввода и значок (например, этот пример):
<input name="hasta" id="Hasta" type="text" readonly />
<a href="#" id="Hasta_icono" ></a>
Вы можете привязать датупик к своему значку (в моем случае внутри тега A через CSS), например:
$("#Hasta").datepicker();
$("#Hasta_icono").click(function() {
$("#Hasta").datepicker( "show" );
});
Ответ 4
Чтобы изменить "...", когда мышь нависает над значком календаря, вам нужно добавить следующие параметры в опции datepicker:
showOn: 'button',
buttonText: 'Click to show the calendar',
buttonImageOnly: true,
buttonImage: 'images/cal2.png',
Ответ 5
HTML:
<div class="CalendarBlock">
<input type="hidden">
</div>
CODE:
$CalendarBlock=$('.CalendarBlock');
$CalendarBlock.click(function(){
var $datepicker=$(this).find('input');
datepicker.datepicker({dateFormat: 'mm/dd/yy'});
$datepicker.focus(); });
Ответ 6
Наличие скрытого поля ввода приводит к проблемам с позиционированием диалогового окна даты (диалог горизонтально центрирован). Вы можете изменить поле диалога, но там лучший способ.
Просто создайте поле ввода и "спрячьте" его, установив непрозрачность на 0 и сделав ширину 1px. Также расположите его рядом с (или под) кнопкой или где бы вы ни захотели, чтобы датапикер отображался.
Затем привяжите 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');
});
});
Примечание: не проверено со всеми браузерами.
Ответ 7
$(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'
});
});
Вышеприведенный код относится к этой ссылке
Ответ 8
<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 при нажатии на триггер.