|
|
|
| У меня был календарь, выводил текущий месяц, решил сделать листание вправо и влево по месяцам с jquery.
Но реализовал только +1 вперед и -1 назад месяца.Допустим если сейчас май
То будет выводиться Апрель и Июнь. Мне требуется чтобы и дальше листался. Нужен счетчик но вот додумать не могу .
Файл index
<? header("Content-Type: text/html;charset=windows-1251"); ?>
<html>
<head>
<title>Ajax</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// --------------
$("#a1").click(
function () {
$.ajax({
url: "ajax_calendar.php?mode=prev",
cache: false,
success: function(html){
$("#next").hide();
$("#message").hide();
$("#results").append(html);
}
});
});
$("#a2").click(
function () {
$.ajax({
url: "ajax_calendar.php?mode=next",
cache: false,
success: function(html){
$("#prev").hide();
$("#message").hide();
$("#results").append(html);
}
});
});
// --------------
$("#loading").ajaxStart(function(){
$(this).show();
});
$("#loading").ajaxStop(function(){
$(this).hide();
});
});
</script>
<style>
#loading {
display:none;
padding-left:10px;
}
#results {
padding: 6px 6px 6px;
width: 340px;
}
</style>
</head>
<body>
<a href="#" id="a1">
ВЛЕВО
</a>
<br></br>
<a href="#" id="a2">
ВПРАВО
</a>
<span id="loading"><img src="loader.gif"><br></span>
<span id="results"></span>
<link rel="stylesheet" type="text/css" href="calendar_simple.css" />
<?php
include('calendar.class.php');
$c = new Calendar();
$c->setCssPrefix('simple_');
$c->lng = 'ru';
echo '<span id="message">';
echo $c->genUMonth(time(), true);
echo '</span>';
?>
</body>
</html>
|
И файл ajax_calendar.php
<?php
$act = $_REQUEST['mode'];
include('calendar.class.php');
$c = new Calendar();
$c->setCssPrefix('simple_');
$c->lng = 'ru';
if ($act == "next") {
echo '<span id="next">';
echo $c->genUMonth(mktime(0,0,0,date("m")+1,1,date("Y")), true);
echo '</span>';
}
if ($act == "prev") {
echo '<span id="prev">';
echo $c->genUMonth(mktime(0,0,0,date("m")-1,1,date("Y")), true);
echo '</span>';
}
?>
|
| |
|
|
|
|
|
|
|
для: VL
(24.05.2010 в 08:32)
| | Вопрос - а зачем для того чтобы узнать дату делать запрос на сервер? Календарь можно построить на чистом JS, в JS есть объект Date. Да и готовых скриптов "листающих" календарей предостаточно, если не понимаете сами как. | |
|
|
|
|
|
|
|
для: sim5
(24.05.2010 в 08:56)
| | Функция которая генерирует календарь ,она еще и делает дни ссылками на документы обращаясь к БД, а так бы с радостью взял бы готовый календарь. | |
|
|
|
|
|
|
|
для: VL
(24.05.2010 в 09:03)
| | Для того, чтобы сделать дни ссылками, не обязательно формировать календарь на сервере, если уж Ajax под рукою. Хотя, если хотите, то добавьте кнопкам навигации календаря даты как плюс год/месяц и минус год/месяц от запрошенной (текущей), тогда будете получать на сервере запрашиваемый год/месяц календаря | |
|
|
|
|
|
|
|
для: sim5
(24.05.2010 в 09:09)
| | Ну я хотел сделать счетчик , сколько раз щелкнул пользователь, но в JS как то не получилось манипулорать данными.
Можно небольшой пример как реализовать и передать потом параметр
сюда
url: "ajax_calendar.php?mode=prev",
|
| |
|
|
|
|
|
|
|
для: VL
(24.05.2010 в 09:33)
| | Зачем вам счетчик?
У вас календарь обязательно содержит две кнопки - назад (prev к примеру) и вперед (next).
Изначально, если нет запроса по этим кнопкам, то им присваивается даты как минус и плюс от текущего месяца, иначе от минус и плюс от запрашиваемой даты. То есть:
<?
//если есть запрос от клиента, то получаем запрашиваемый месяц,
//иначе текущий
//где $_GET['navi'], это дата от кнопки вперед или назад
//выберите формат даты удобный для преобразования и запросов
$date = isset($_GET['navi']) ? $_GET['navi'] : date('Y-m');
//выдаем календарь на месяц $date
//и указываем даты кнопкам навигации
?>
<input type="button" name="prev" value="<?php echo $date - месяц; ?>">
<input type="button" name="next" value="<?php echo $date + месяц; ?>">
|
| |
|
|
|
|
|
|
|
для: sim5
(24.05.2010 в 09:49)
| | Хм. мы будет применять метод GET.
Но ведь я хочу все сделать это без перезагрузки главной страницы моего сайта,чтобы делать это без перезагрузки страницы пользователя. | |
|
|
|
|
|
|
|
для: VL
(24.05.2010 в 10:00)
| | Ajax, это в любом случае запрос, jQuery может отправлять их любым методом (POST, GET), как у вас это я не знаю (не вникал в код ваш), так что, думаю, заменить на нужное вы сможете. Суть не в методе. | |
|
|
|
|
|
|
|
для: sim5
(24.05.2010 в 10:04)
| | Понял спасибо. Последний вопрос тогда . Если я буду посылать методом GET
то как в строку
url: "ajax_calendar.php?mode=prev&date=значение"
передать значение . | |
|
|
|
|
|
|
|
для: VL
(24.05.2010 в 10:13)
| | В jQuery есть масса методов работы с объектами элементов формы, причем они очень простые. Да и вообще, jQuery за вас очень многое делает. Мой совет, загляните в описание методов jQuery, уверен, что вы поймете без труда сами как это сделать, да и это намного полезнее для вас. Написанное мной покажет как, но пользы вам не принесет, ибо кроме этого, думаю, у вас появятся и другие вопросы, а понимание вами поможет их решить.
Могу лишь заметить по поводу url (кстати, не обязательно кнопка должна иметь его, почитайте о методах ajax в jQuery) - достаточно будет одного из параметров из вашей строки запроса (date лучше подойдет, по смыслу, ибо он и будет предавать ее), чтобы на сервере определить, что нужно выводить календарь не текущей даты, а запрашиваемой. | |
|
|
|
|
|
|
|
для: VL
(24.05.2010 в 10:13)
| |
$.get("test.cgi", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
|
| |
|
|
|