Архив

Архив раздела ‘Javascript’
21 марта 2013 Нет комментариев

Имеется 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);
	}
}
Categories: Javascript Tags:
15 марта 2013 Нет комментариев

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

Categories: Javascript Tags:
16 февраля 2013 Нет комментариев
<select id="selectid" name="selectname" onchange="location = this.options[this.selectedIndex].value;">
	<option value="/page1">Страница 1</option>
	<option value="/page2">Страница 2</option>
</select>
Categories: Javascript Tags:
1 февраля 2013 Нет комментариев

Javascript:

function printBlock() {
	$("input").each(function(){
		$(this).attr("value", $(this).val());
	});
	$("select").each(function(){
		var val=$(this).val();
		$("option[value='"+val+"']", this).attr('selected', 'selected');
	});
	var PrintContent=$('#PrintContent').html();
	$('body').addClass('printSelected');
	var Logo='<div class="printLogo"><img src="/templates/images/logo.gif" alt=""/></div>';
	var Contacts='<div class="printPhone"><b>Адрес</b><br/>Телефон</div><div style="clear:both;"></div>';
	$('body').append('<div class="printSelection">'+Logo+Contacts+PrintContent+'</div>');
	var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
	if (!is_chrome) {
		window.print();
		window.setTimeout(pageCleaner,0);
	}
	else {
		document.onmousemove=window.print();
		window.setTimeout(pageCleaner,1000);
	}
	return false;
}
function pageCleaner() {
	$('body').removeClass('printSelected');
	$('.printSelection').remove();
}

CSS:

/*-------------------- PRINTER --------------------*/
.printLogo {float:left;}
.printPhone {float:right;margin-right:10px;}
.printPhone td{vertical-align:top;padding-right:25px;}
.printSelected { background: #ffffff; padding: 10px; }
.printSelected div { display:none; }
.printSelected div.printSelection { display:block; }
.printSelected div.printSelection div { display:block; }
.printlink { float:right; }
.printlink img{ cursor:pointer; }

HTML :

<div class="printlink" onclick='printBlock();'><img alt="Распечатать" src="/images/print.gif" /></div>
<div id="PrintContent">
...
</div>
Categories: Javascript Tags: ,
22 января 2013 Нет комментариев

Для получения содержимого блока с заполненными полями в форме.

$("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

Categories: Javascript Tags: ,
12 января 2013 Нет комментариев

Функции для записи, чтения, очистки 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

Categories: Javascript Tags:
18 сентября 2012 Нет комментариев

Понадобилось для выделения активного элемента навигации по странице.
Скрипт в заголовке страницы (суть работы в том что по клику по ссылке активному элементу дописываем class active):

<script type="text/javascript">
	function RPClass(el) {
		var nav=document.getElementById('nav');
		var links=nav.getElementsByTagName('li');
		for (var i=0;i<links.length;i++) {
			var li=links[i];
			li.className='';
		}
		el.className = 'active';
	}
</script>

Собственно список:

<ul id='nav'>
	<li onclick='RPClass(this);'><a href='#1'>1</a></li>
	<li onclick='RPClass(this);'><a href='#2'>2</a></li>
	<li onclick='RPClass(this);'><a href='#3'>3</a></li>
	<li onclick='RPClass(this);'><a href='#4'>4</a></li>
	<li onclick='RPClass(this);'><a href='#5'>5</a></li>
</ul>

Пример CSS для горизонтального меню с выделением активного элемента рамкой и фоном:

#nav {
	list-style:none;
}
#nav li {
	float:left;
	padding:10px;
	border:1px solid #ffffff;
	margin-right:4px;
}
#nav li:hover, #nav li.active{
	border:1px solid #505050;
	background:#dddddd;
}
#nav li a {
	color:#505050;
	text-decoration:none;
}
Categories: Javascript Tags: