289

Пятничные сниппеты. JavaScript, часть 2.

27 июня 2008, 23:57JavaScriptрейтинг +20-

Продолжение серии сниппетов, которое сегодня посвящено JavaScript. Вы так же можете посмотреть предыдущие сниппеты по Javascript.

положение курсора javascript, попап окно javascript, получение переменных из адресной строки url javascript, проверка заполнения форм javascript.
Здесь могла бы быть Ваша реклама
показать рекламу :)убрать рекламу

1. Определение положения курсора

function getPosition(e) 
{
e = e || window.event;
var cursor = {x:0, y:0};
if (e.pageX || e.pageY)
{
cursor.x = e.pageX;
cursor.y = e.pageY;
}
else
{
cursor.x = e.clientX +
(document.documentElement.scrollLeft ||
document.body.scrollLeft) -
document.documentElement.clientLeft;

cursor.y = e.clientY +
(document.documentElement.scrollTop ||
document.body.scrollTop) -
document.documentElement.clientTop;
}
return cursor;
}

2. Попап окно, которое выводиться по центру экрана

nn4 = (document.layers) ? true : false;
ie4 = (document.all) ? true : false;
dom = (document.createTextNode)? true : false;

function popupWindow(fileUrl, winN, winWidth, winHeight, scrollB)
{
var winName = (winN)? winN : 'popupWin'
var scrollBars = (scrollB)? scrollB : 'auto'
if (nn4 || ie4 || dom)
{
if (screen.width < winWidth + 50) { winWidth = screen.width - 50; scrollbars = 'yes' }
if (screen.height < winHeight + 100) { winHeight = screen.height - 100; scrollbars = 'yes' }
posX = Math.round((screen.width - winWidth) / 2);
posY = Math.round((screen.height - winHeight) / 2);
posCode = (nn4)? "screenX="+posX+",screenY="+posY : "left="+posX+",top="+posY;
}
else
{
posCode = "";
}
var popupWin = window.open(fileUrl, winName,"menubar=no,
toolbar=no, scrollbars="+scrollB+", status=yes, resizable=no, width=" + winWidth + ",
height=" + winHeight + " ," + posCode);
if (popupWin) popupWin.focus();
}

3. Получение GET переменной по ее имени

function getUrlVar(name)
{
name = name.replace(/[[]/,"[").replace(/[]]/,"]");
var regexS = "[?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if(results == null) return "";
else return results[1];
}

4. Получение ассоциативного массива GET переменных

function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}

return vars;
}

5. Универсальный валидатор форм

function checkForm(obj, elems) 
{
var element, pattern;
for (var i = 0; i < obj.elements.length; i++)
{
// пробегаемся по всем элементам формы
element = obj.elements[i];
// Проверяем только нужные поля
if (elems != undefined)
if (elems.join().indexOf(element.type) < 0) continue;
// И только если есть чего говорить юзеру в случае ошибки
if (!element.getAttribute("check_message")) continue;
if (pattern = element.getAttribute("check_pattern"))
{
// если задан рег
pattern = new RegExp(pattern, "g");
if (!pattern.test(element.value))
{
alert("Пожалуйста, заполните правильно графу " + element.getAttribute("check_message"));
element.focus();
return false;
}
}
else if(/^s*$/.test(element.value))
{
// иначе просто проверка что поле не пустое
alert("Пожалуйста, заполните графу " + element.getAttribute("check_message"));
element.focus();
return false;
}
}
return true;
}

// пример использования

<form method="GET" action="script.htm" onSubmit="return checkForm(this)">
<input type="text" name="dummy"/>Не проверяется<br/>
<input type="text" name="name" check_message="Имя"/>Имя<br>
<input type="text" name="e-mail" check_pattern="^[w-]+(.[w-]+)*@([w-]+.)+[a-zA-Z]{2,7}$" check_message="Электронная почта"/>Электронная почта<br/>
<textarea name="message" check_message="Сообщение"></textarea><br>
<input type="submit" value="submit"/>
</form>

Memori.rumister-wong.combobrdobr.rumoemesto.rudel.icio.uszakladki.yandex.rugoogle.com/bookmarks/

Комментарии

Спасибо, интересно :)
Ph, 29 июня 2008, 15:07
Спасибо, пригодилось.
WebMan, 29 июня 2008, 23:01
Круто.
Жека, 30 июня 2008, 1:31
Отличная статейка! Тока несколько вопросов) Что такое window.event?
KELiON, 18 июля 2008, 14:16
ну это такой объект в Javascript )
Grin, 18 июля 2008, 14:25