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

27 июня 2008, 23:57 Павел Марковнин JavaScript рейтинг +21-

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

Рекламное место, которое может стать вашим

Понравилась статья?

Тогда подпишись на обновления через RSS или воспользуйся
другими способами подписки.

Читать в Яндекс.Ленте Добавить в Google Добавить в Netvibes
  •  

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

RSS
  • Аватарка
    29 июня 2008 в 15:07 Ph
    Спасибо, интересно :)
  • Аватарка
    29 июня 2008 в 23:01 WebMan
    Спасибо, пригодилось.
  • Аватарка
    30 июня 2008 в 1:31 ]]>Жека]]>
    Круто.
  • Аватарка
    18 июля 2008 в 14:16 KELiON
    Отличная статейка! Тока несколько вопросов) Что такое window.event?
  • Аватарка
    18 июля 2008 в 14:25 ]]>Grin]]>
    ну это такой объект в Javascript )
  • Эл. почта (используется для Граватарки)
  • Домашняя страница
  • Имя в Твиттере
  • Разрешенные теги Текст сообщения (надо бы заполнить это поле)
  • как выглядит какой тег
    жирный текст <b>жирный текст</b>
    курсивный тект <i>курсивный тект</i>
    зачеркнутый текст <s>зачеркнутый текст</s>
    подчеркнутый текст <u>подчеркнутый текст</u>
    ссылка <a href="адрес">ссылка</a>
    function foo() { ... }
    <pre><code>function foo() { ... } </code></pre>