order_from
и order_to
— массивы, содержащие значения дней, месяцов и лет периодов.
На выходе:
order_days
— интервал в днях;
budn
— количество будней;
vyh
— количество выходных.
var time_from=new Date(order_from['y'],order_from['m']-1,order_from['d']);
var time_to=new Date(order_to['y'],order_to['m']-1,order_to['d']);
var order_days=Math.floor((time_to.getTime()-time_from.getTime())/(1000*60*60*24));
var getday=new Date();
var vyh=0;
var curday;
for (i=0;i<=order_days;i++) {
//getday.setDate(time_from.getDate()+i);
getday.setTime(time_from.getTime()+((1000*3600*24)*i));
curday=getday.getDay();
if ((curday==0)||(curday==6)) {
vyh++;
}
}
var budn=order_days;
budn=budn-vyh;
Имеется 3 select: день, месяц и год.
Задача: перезагружать select с днями в зависимости от выбранного месяца, и года — для того чтобы узнать количество дней в феврале (високосный год или нет).
В примере часть javascript, отвечающая непосредственно за перезагрузку, как рисовать сами селекты и т.д. должно быть понятно.
var order_from=new Array;
var order_from_y=document.getElementById('calc_from_y');
order_from['y']=order_from_y.options[order_from_y.selectedIndex].value;
var order_from_m=document.getElementById('calc_from_m');
order_from['m']=order_from_m.options[order_from_m.selectedIndex].value;
var order_from_d=document.getElementById('calc_from_d');
order_from['d']=order_from_d.options[order_from_d.selectedIndex].value;
var days_in_month=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
if ((order_from['y']%4==0)&&(order_from['m']==2)){
days_in_month[1]++;
}
if (order_from_d.length>days_in_month[order_from['m']-1]) {
order_from_d.length=days_in_month[order_from['m']-1];
}
else {
for(i=order_from_d.length+1;i<=days_in_month[order_from['m']-1];i++) {
order_from_d.options[order_from_d.options.length] = new Option(i,i);
}
}
No comment.. Все достаточно просто.
var time_from=new Date(order_from['y'],order_from['m']-1,order_from['d']);
var time_to=new Date(order_to['y'],order_to['m']-1,order_to['d']);
var order_days=Math.floor((time_to.getTime()-time_from.getTime())/(1000*60*60*24));
http://belonogov.blogspot.com/2009/01/blog-post_12.html
Для получения содержимого блока с заполненными полями в форме.
$("input").each(function(){
$(this).attr("value", $(this).val());
});
$("select").each(function(){
var val=$(this).val();
$("option[value='"+val+"']", this).attr('selected', 'selected');
});
var Content=$('#Content').html();
Использовалось для печати блока с формой, чтобы поля оставались заполненными: http://krylov.org.ua/?p=756
Функции для записи, чтения, очистки cookies:
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
подробнее: http://www.quirksmode.org/js/cookies.html