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

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

Продолжение серии сниппетов, которое сегодня посвящено 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>

 

Расскажите друзьям

Оцените статью:
  • 1
  • 2
  • 3
  • 4
  • 5

Комментарии — 7

Ph
Спасибо, интересно :)
#
Ph
WebMan
Спасибо, пригодилось.
#
WebMan
KELiON
Отличная статейка! Тока несколько вопросов) Что такое window.event?
#
KELiON
Grin
ну это такой объект в Javascript )
#
Grin
AlexWin
Спасибо. Пригодилось, особенно "Универсальный валидатор форм".
Павел
А есть аналогичная статья только для jQuery?
#
Павел

Новый комментарий

как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть
как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть

metin2 pvp metin2 pvp serverler pvp serverler