Популярность JavaScript во многом обусловлена именно тем, что написанный на нем сценарий может реагировать на действия пользователя и другие внешние события. Каждое из событий связано с тем или иным объектом: формой, гипертекстовой ссылкой или даже с окном, содержащим текущий документ.
В качестве примеров внешних событий, на которые могут
Обработка события производится с помощью специально предназначенного для этого фрагмента кода, называемого обработчиком события. Для каждого события JavaScript предоставляет свой обработчик. Однако при построении сценария можно создавать собственный обработчик события и использовать его вместо обработчика, заданного по умолчанию.
Имя обработчика определяет, какое событие он должен обрабатывать. Так, для того чтобы сценарий нужным образом отреагировал на щелчок мышью, используется обработчик с именем onClick, для обработки события, заключающегося в получении фокуса ввода, - обработчик onFocus.
Для того чтобы указать интерпретатору JavaScript на то, что обработкой события должен заниматься обработчик, необходимо включить в HTML-дескриптор следующее выражение:
имя_обработчика="команды_обработчика"
Это выражение включается в тэг, описывающий объект, с которым связано событие.
Например, если необходимо обработать событие, заключающееся в получении фокуса полем ввода, дескриптор, описывающий этот интерактивный элемент, должен иметь примерно следующий вид:
<input type="text" name="Inform" onFocus="handleFocus();">
Имя обработчика является одним из атрибутов HTML-дескриптора, а команды, предназначенные для обработки события, выступают в роли значения этого атрибута. В данном случае обработка события производится в теле функции handleFocus(). В принципе, обработчиком может быть не только функция, но и любая последовательность команд JavaScript в виде составного оператора.
Следующий пример демонстрирует обработку события, связанного с наведением курсора мыши на гиперссылку:
<a href = "http://www.myhp.edu"
onmouseover="alert('An onMouseOver event'); return false">
<img src="my.gif" width="50" height="50">
</a>
Ниже приводится полный текст HTML документа c JavaScript сценарием, в котором обрабатывается событие нажатия кнопки мыши, и определяется, какая именно из них была нажата:
<html>
<head>
<script language = "javascript">
function whichButton(event)
{
if (event.button == 2)
{
alert("Вы щелкнули правой кнопкой мыши!");
}
else
{
alert("Вы щелкнули левой кнопкой мыши!");
}
}
</script>
</head>
<body onmousedown="whichButton(event)">
<p>Щелкните любой кнопкой мыши в любом месте документа</p>
</body>
</html>
Таким образом, для того чтобы обработать какое-либо стандартное событие в браузере, необходимо добавить в подходящий HTML тэг атрибут, соответствующий этому событию, указав в качестве значения атрибута имя JavaScript функции. Список атрибутов, которые определены для HTML тэгов приводится ниже:
IE: Internet Explorer, F: Firefox, O: Opera, W3C: стандарт
| Атрибут | Описание | Номер версии браузера | W3C | ||
| IE | F | O | |||
onabort |
Прерванная загрузка изображения | 4 | 1 | 9 | Да |
onblur |
утрата фокуса элементом | 3 | 1 | 9 | Да |
onchange |
Изменение содержимого в поле ввода | 3 | 1 | 9 | Да |
onclick |
Щелчок мыши на объекте | 3 | 1 | 9 | Да |
ondblclick |
Двойной щелчок мыши на объекте | 4 | 1 | 9 | Да |
onerror |
Ошибка при загрузке изображения или документа | 4 | 1 | 9 | Да |
onfocus |
Получение фокуса элементом | 3 | 1 | 9 | Да |
onkeydown |
Нажатие клавиши | 3 | 1 | Нет | Да |
onkeypress |
Клавиша нажата | 3 | 1 | 9 | Да |
onkeyup |
Отжатие клавиши | 3 | 1 | 9 | Да |
onload |
Завершение загрузки страницы или изображения | 3 | 1 | 9 | Да |
onmousedown |
Нажатие кнопки мыши | 4 | 1 | 9 | Да |
onmousemove |
Перемещение курсора мыши | 3 | 1 | 9 | Да |
onmouseout |
Смещение курсора мыши с объекта | 4 | 1 | 9 | Да |
onmouseover |
Наведение курсора мыши на объект | 3 | 1 | 9 | Да |
onmouseup |
Отжатие кнопки мыши | 4 | 1 | 9 | Да |
onreset |
Кнопка "Reset" нажата | 4 | 1 | 9 | Да |
onresize |
Изменение размера окна | 4 | 1 | 9 | Да |
onselect |
Выделение текста | 3 | 1 | 9 | Да |
onsubmit |
Кнопка "Submit" нажата | 3 | 1 | 9 | Да |
onunload |
Уход с веб-страницы | 3 | 1 | 9 | Да |
Регулярные выражения — система поиска текстовых фрагментов в электронных документах, основанная на специальной системе записи образцов для поиска.
Образец, задающий правило поиска, называется "шаблоном". Применение регулярных выражений принципиально преобразило технологии электронной обработки текстов.
С помощью регулярных выражений можно задавать структуру искомого шаблона и его позицию внутри строки (например, в начале или в конце строки, на границе или не на границе слова).
При описании структуры шаблона используются:
Для того, чтобы задать положение искомого фрагмента внутри строки, можно использовать один из следующих операторов:
| Представление | Позиция |
| ^ | Начало строки |
| $ | Конец строки |
| \b | Граница слова |
| \B | Не граница слова |
| (?=шаблон) | Искомая строка следует после указанной строкой (с просмотром вперед) |
| (?!=шаблон) | Искомая строка не следует после указанной строки (с просмотром вперед) |
| (?<=шаблон) | Искомая строка следует после указанной строкой (с просмотром назад) |
| (?<!=шаблон) | Искомая строка не следует после указанной строки (с просмотром назад) |
Кроме того, язык регулярных выражений предоставляет набор
| Представление | Число повторений |
| { n } | Ровно n |
| { m, n } | От m до n включительно |
| { m,} | Не менее m |
| {, n } | Не более n |
Имеются и более простые
| Представление | Число повторений | Эквивалент | |||
| * | Ноль или более | { 0,} | |||
| + | Одно или более | { 1,} | |||
| ? | Ноль или одно | { 0, 1 } |
Для задания внутри шаблона группы символов можно использовать следующие операторы:
| Оператор | Описание |
| [xyz] | Любой символ из указанного множества |
| [^xyz] | Любой символ не входящий в указанное множество |
| [x-z] | Любой символ из указанного диапазона |
| [^x-z] | Любой символ не входящий в указанный диапазон |
| . ( точка ) | Любой символ кроме символов разрыва или переноса строки |
| \w | Любой буквенно-цифровой символ, включая символ подчеркивания |
| \W | Любой не буквенный символ |
| \d | Любая цифра |
| \D | Любой нецифровой символ |
| \s | Любой неотображаемый символ |
| \S | Любой символ (кроме неотображаемых символов) |
Для группировки отдельных частей шаблона можно использовать следующие операторы:
| Оператор | Описание |
| ( ) | Поиск группы символов внутри скобок и сохранение найденного соответствия |
| (?: ) | Поиск группы символов внутри скобок без сохранения найденного соответствия |
| | | Комбинирование частей в одно выражения с последующим поиском любой из частей в отдельности. Аналогично оператору "ИЛИ". |
Если шаблон поиска включает специальные (как правило неотображаемые) символы, для их описания можно использовать следующие обозначения:
| Обозначение | Описание |
| \0 | Символ с нулевым кодом |
| \n | Символ новой строки |
| \r | Символ начала строки |
| \t | Символ табуляции |
| \v | Символ вертикальной табуляции |
| \xxx | Символ, имеющий заданный восьмеричный ASCII код xxx |
| \xdd | Символ, имеющий заданный шестнадцатиричный ASCII код dd |
| \uxxxx | Символ, имеющий ASCII код выраженный ЮНИКОДОМ xxxx |
Например, строка вида
<p> <font color='blue'> <i>Регулярные выражения<i> </font> - удобный инструмент для поиска в строках </p>
формально соответствует указанному выше шаблону
Для решения данной проблемы можно использовать два подхода.
<[^>]*> для вышеописанного случая).Например, по шаблону ( <.*?> ) будут найдены все теги из рассмотренной строки.
Таким образом, получаются следующие "нежадные" модификации квантфикаторов:
| Модификатор | Описание | ||
| *? | "не жадный" эквивалент * | ||
| +? | "не жадный" эквивалент + | ||
| {n,}? | "не жадный" эквивалент {n,} |
Следует, однако, иметь в виду, что использование "ленивых"
При поиске по тексту можно использовать шаблон, описывающий подстроку. В JavaScript такой шаблон может быть описан с помощью объекта . В простейшем случае такой шаблон описывает отдельный символ, однако имеет смысл его использовать для регулярных выражений.
Следующий ниже код описывает объект с именем pttn, содержащий регулярное выражение, описывающее целое десятичное число:
var pattn = new RegExp("/[0-9]+/");
Объект имеет 3 встроенных метода: test(), exec() и compile().
test() выполняет поиск по шаблону:var pattn = new RegExp("[0-9]+");
document.write(pattn.test("38 попугаев"));
Результат:
true
exec() выполняет поиск подстроки по шаблону и возвращает найденные соответствия; если соответствий нет, возвращается значение null:var pattn=new RegExp("[0-9]+");
document.write(pattn.exec("38 попугаев"));
Результат:
38
Если необходимо найти все соответствия, то при вызове конструктора следует указать дополнительный параметр "g", указывающий на необходимость глобального поиска:
var pattn = new RegExp("[0-9]+", "g");
do
{
result = pattn.exec("1 попугай, 2 попугая,…, 38 попугаев");
document.write(" " + result);
}
while (result != null)
Результат:
1 2 38 null
compile() применяется для изменения ранее созданного шаблона:var pattn = new RegExp("[0-5]+");
document.write(pattn.exec("38 попугаев"));
pattn.compile("[6-9]+");
document.write(";" + pattn.exec("38 попугаев"));
Результат:
3;8
Проверка значений, введенных пользователем в поля формы для регистрации.
<form> добавьте обработчик события отправки данных вида:onSubmit = "CheckData(); return false;"В данном случае указана функция обработчик
CheckData(). Оператор return false; предотвращает автоматическую отправку данных после выполнения функции-обработчика. Отправка данных будет выполняться из обработчика.function CheckData()
{
var ans;
ans = confirm("Вы уверены, что хотите отправить введенные данные ?");
if (ans) submit();
}
Как это видно из кода, функция CheckData() в случае подтверждения со стороны пользователя самостоятельно вызывает метод submit() для передачи данных из формы.Прежде всего, необходимо убедиться в том, что заполнены все поля, обязательные для ввода. Для этого можно использовать проверку на равенство нулю длины строки (свойство length ), являющейся значением узла дерева документа, соответствующего полю ввода, например:
document.getElementById("uname").value.length.
Следующая проверка должна контролировать структуру и содержимое полей. Для этого можно использовать объект , например:
var validEMail, pattn;
pattn = new RegExp("^[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?\.[A-Za-z0-9]{2,6}$");
validEMail = pattn.test(document.getElementById("email").value));
В данном фрагменте описана проверка структуры электронного адреса из поля формы с идентификатором "email". Для проверки был использован шаблон на основе регулярного выражения.
Самостоятельно постройте регулярное выражение, описывающее шаблон для проверки номера телефона, и внесите все необходимые изменения и дополнения в функцию CheckData().
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.