Я использую средство выбора даты jQuery для отображения календаря на всем протяжении моего приложения. Я хочу знать, могу ли я использовать его для отображения месяца и года (май 2010) а не календарь?
Вот хак (обновлен полный .html файл):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<link rel="stylesheet" type="text/css" media="screen" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/base/jquery-ui.css">
<script type="text/javascript">
$(function() {
$('.date-picker').datepicker( {
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'MM yy',
onClose: function(dateText, inst) {
$(this).datepicker('setDate', new Date(inst.selectedYear, inst.selectedMonth, 1));
}
});
});
</script>
<style>
.ui-datepicker-calendar {
display: none;
}
</style>
</head>
<body>
<label for="startDate">Date :</label>
<input name="startDate" id="startDate" class="date-picker" />
</body>
</html>
EDIT. для вышеприведенного примера: http://jsfiddle.net/DBpJe/7755/
EDIT 2 Добавляет значение года месяца в поле ввода только при нажатии кнопки Готово. Также позволяет удалить значения поля ввода, что невозможно в вышеуказанном поле http://jsfiddle.net/DBpJe/5103/
EDIT 3
обновленный Better Solution на основе решения rexwolf вниз.
http://jsfiddle.net/DBpJe/5106
Что о: http://www.mattkruse.com/javascript/calendarpopup/
Выберите месяц- выберите пример
после того, как вы нашли jQueryUI.com в поисках datepicker, вот мой вывод и ответ на ваш вопрос.
Во-первых, я бы сказал нет на ваш вопрос. Вы не можете использовать jQueryUI datepicker только для выбора месяца и года. Не поддерживается. Для этого нет функции обратного вызова.
Но вы можете взломать его, чтобы отображать только месяц и год, используя css, чтобы скрыть дни и т. Д. И я думаю, это не имеет смысла, потому что вам нужны даты щелкните, чтобы выбрать дату.
Я могу сказать, что вам просто нужно использовать другое средство выбора даты. Как то, что предложил Роджер.
Используйте onSelect
, чтобы перезвонить, удалите часть года вручную и установите текст в поле вручную
@Ben Koehler, отлично! Я внес небольшую модификацию, чтобы использование одного экземпляра средства выбора даты более одного раза работало должным образом. Без этой модификации дата анализируется неправильно, а ранее выбранная дата не выделяется.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<link rel="stylesheet" type="text/css" media="screen" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/base/jquery-ui.css">
<script type="text/javascript">
$(function() {
$('.date-picker').datepicker( {
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'MM yy',
onClose: function(dateText, inst) {
var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(year, month, 1));
},
beforeShow : function(input, inst) {
var datestr;
if ((datestr = $(this).val()).length > 0) {
year = datestr.substring(datestr.length-4, datestr.length);
month = jQuery.inArray(datestr.substring(0, datestr.length-5), $(this).datepicker('option', 'monthNamesShort'));
$(this).datepicker('option', 'defaultDate', new Date(year, month, 1));
$(this).datepicker('setDate', new Date(year, month, 1));
}
}
});
});
</script>
<style>
.ui-datepicker-calendar {
display: none;
}
</style>
</head>
<body>
<label for="startDate">Date :</label>
<input name="startDate" id="startDate" class="date-picker" />
</body>
</html>