Обработчик события onchange для переключателя (тип input = «radio») не работает как одно значение

Серия удачных событий

При возникновении события система генерирует сигнал, а также предоставляет механизм, с помощью которого можно автоматически предпринимать какие-либо действия (например, выполнить определённый код), когда происходит событие. Например, в аэропорту, когда взлётно-посадочная полоса свободна для взлёта самолёта, сигнал передаётся пилоту, и в результате они приступают к взлёту.

В Web события запускаются внутри окна браузера и, как правило, прикрепляются к конкретному элементу, который в нем находится. Это может быть один элемент, набор элементов, документ HTML, загруженный на текущей вкладке, или все окно браузера. Существует множество различных видов событий, которые могут произойти, например:

  • Пользователь кликает мышью или наводит курсор на определённый элемент.
  • Пользователь нажимает клавишу на клавиатуре.
  • Пользователь изменяет размер или закрывает окно браузера.
  • Завершение загрузки веб-страницы.
  • Отправка данных через формы.
  • Воспроизведение видео, пауза или завершение воспроизведения.
  • Произошла ошибка.

Подробнее о событиях можно посмотреть в Справочнике по событиям.

Каждое доступное событие имеет обработчик событий — блок кода (обычно это функция JavaScript, вводимая вами в качестве разработчика), который будет запускаться при срабатывании события. Когда такой блок кода определён на запуск в ответ на возникновение события, мы говорим, что мы регистрируем обработчик событий

Обратите внимание, что обработчики событий иногда называют слушателями событий (от англ. event listeners). Они в значительной степени взаимозаменяемы для наших целей, хотя, строго говоря, они работают вместе

Слушатель отслеживает событие, а обработчик — это код, который запускается в ответ на событие.

Примечание: Важно отметить, что веб-события не являются частью основного языка JavaScript. Они определены как часть JavaScript-API, встроенных в браузер. Рассмотрим простой пример

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

Рассмотрим простой пример. Вы уже видели события и обработчики событий во многих примерах в этом курсе, но давайте повторим для закрепления информации. В этом примере у нас есть кнопка , при нажатии которой цвет фона изменяется случайным образом:

JavaScript выглядит так:

В этом коде мы сохраняем ссылку на кнопку внутри переменной  типа , используя функцию . Мы также определяем функцию, которая возвращает случайное число. Третья часть кода — . Переменная указывает на элемент — для этого типа объекта существуют возникающие при определённом взаимодействии с ним события, а значит, возможно использование обработчиков событий. Мы отслеживаем момент возникновения события при щелчке мышью, связывая свойство обработчика события с анонимной функцией, генерирующей случайный цвет RGB и устанавливающей его в качестве цвета фона элемента .

Этот код теперь будет запускаться всякий раз, когда возникает событие при нажатии на элемент  — всякий раз, когда пользователь щёлкает по нему.

Пример вывода выглядит следующим образом:

События, как понятие, относятся не только к JavaScript — большинство языков программирования имеют модель событий, способ работы которой часто отличается от модели в JavaScript. Фактически, даже модель событий в JavaScript для веб-страниц отличается от модели событий для просто JavaScript, поскольку используются они в разных средах.

Например, Node.js — очень популярная среда исполнения JavaScript, которая позволяет разработчикам использовать JavaScript для создания сетевых и серверных приложений. Модель событий Node.js основана на том, что существуют обработчики, отслеживающие события, и эмиттеры (передатчики), которые периодически генерируют события. В общем-то, это похоже на модель событий в JavaScript для веб-страниц, но код совсем другой. В этой модели используется функция  для регистрации обработчиков событий, и функция  для регистрации обработчика событий, который отключается после первого срабатывания. Хорошим примером использования являются протоколы событий .

Вы также можете использовать JavaScript для создания кросс-браузерных расширений — улучшения функциональности браузера с помощью технологии WebExtensions. В отличии от модели веб-событий здесь свойства обработчиков событий пишутся в так называемом регистре CamelCase (например, , а не ) и должны сочетаться с функцией . См. для примера.

На данном этапе обучения вам не нужно особо разбираться в различных средах программирования, однако важно понимать, что принцип работы событий в них отличается

Как вырастить и поддерживать внутренних экспертов — делятся сами эксперты

У нас есть разные подходы, и в первую очередь встроенная программа, которая называется «Лидер учит лидеров», когда руководители высшего и среднего уровня делятся своими практиками через встраивание прямо в программы обучения. То есть мы приглашаем их на программы, где есть и внешние, и внутренние эксперты, и руководители добавляют к ним уже какие-то свои ценности и знания исходя из своей личности и опыта. Есть программа, где соавторами являются внутренние эксперты, лидеры трайбов — топ-менеджеры, которые сами преподают на программе и приглашают других преподавать в свои команды. По сути, они ролевые модели и с точки зрения экспертизы, и с точки зрения коммуникаций, и с точки зрения открытости. Такие программы, сделанные с внутренними экспертами, участники ценят гораздо больше, это видно по обратной связи. Формируется своего рода особый нетворкинг, когда человек впоследствии может встретить этого самого эксперта вот так просто где-то в коридоре и буквально за чашкой чая обсудить какие-то вопросы.

Сотрудники ценят программу, реализованную совместно с внутренними экспертами, больше, чем с внешними: по сути, это действие «эффекта ИКЕА», когда мы выше оцениваем то, что сделали своими руками. Сам человек чувствует признание, что он внес свой вклад, прошел какой-то процесс вместе с группой и уже получил результат.

Мотивация — это то, о чем можно говорить бесконечно, но она не может быть единой для всех

Есть несколько категорий людей: кому-то важна статусность, кому-то важно личное удовлетворение, кому-то нужно что-то материальное. Задача специалистов, которые занимаются развитием культуры обмена знаниями, заключается в том, чтобы сделать так, чтобы сотрудники были мотивированы делиться, но не «за что-то», а «почему-то»

Человек — существо своеобразное, он не любит делать то, что ему не нравится. Он любит делать то, что приносит ему пользу, удовольствие и как-то его положительно стимулирует

То есть для мотивации к обмену знаниями важно дать четкое «зачем?». Лучше всего составить список ценностей по типам людей и посмотреть, какие из существующих элементов или механик мотивации позволяют эти ценности затронуть

Помогают ли они делиться, лучше узнавать друг друга, вовлечься в процесс? Если да — оставляем, если нет — убираем.

Драйверы могут быть разные: есть драйверы конкурентности, среды, то есть возможность выделиться, есть возможность получить какие-то бонусы (скажем, поездка куда-то за границу). Все эти вещи нужно понимать. Сначала среда, и только потом упаковка, то есть внутренняя продажа, — зачем людям участвовать, посвящать свое время для того, чтобы вовлечься в процесс?

Как вы запускаете событие изменения раскрывающегося списка в React?

Вы должны сохранить выбранное значение как состояние и обновить состояние при изменении значения. Обновление состояния вызовет визуализацию компонента. вар MySelect = Реагировать. createClass({ getInitialState: function() { return {value: ‘select’ } }, change: function(event){ this.

Как вы получаете значение ввода в React? Чтобы получить входное значение из входного тега в Reactjs, вы можете использовать цель. свойство value события который передается обработчиком onChange всякий раз, когда пользователь вводит тег ввода.

Как активировать событие в рабочем процессе?

Добавить триггер события SAP Workflow

  1. Шаг 1. Назначьте приемник событий базовому рабочему процессу. В SWDD перейдите к основным сведениям (значок шляпы) вашего рабочего процесса и выберите вкладку «Начать события». …
  2. Шаг 2 – Настройка привязок. Теперь нажмите кнопку привязки. …
  3. Шаг 3 – Активируйте стартовое событие. …
  4. Шаг 4 – Активируйте рабочий процесс. …
  5. Шаг 5 – Проверка рабочего процесса.

Как запустить цепочку процессов на основе событий? Инициируйте цепочку процессов, используя событие и событие по программе

  1. Первый шаг — создать событие Z_TEST в SM62. Перейдите к коду транзакции SM62. · Выберите вкладку BackProcEvnts. …
  2. Запланируйте свою цепочку процессов через событие. Перейдите к коду транзакции RSPC. …
  3. Запуск события по программе. Перейдите к коду транзакции SE38. …
  4. Создайте вариант Z_TEST. ·

Как найти задание, запускаемое событием, в SAP?

Как найти задание ABAP, инициированное событием SAP

  1. Таблица ABAP BTCEVTJOB: Список заданий, ожидающих событий. …
  2. Затем запустите экран выбора простой работы с кодом транзакции SM37. …
  3. Нажмите значок F8 Execute, чтобы вывести список всех выполненных заданий. …
  4. Если вы дважды щелкните имя задания, оно покажет программистам ABAP определение задания SAP.

Как найти событие в цепочке процессов? Действия, которые необходимо выполнить:

  1. Цепочка процессов «ZPC_RSO_FLOW» запускается с помощью события «Z_RSO_TEST» в варианте запуска.
  2. Перейдите к таблице BTCEVTJOB в SE11: введите идентификатор события, например: «Z_RSO_TEST»…
  3. Перейдите к таблице «RSPCPROCESSLOG» в SE11: …
  4. Перейти к таблице «RSPCCHAIN»: …
  5. Перейдите к Tcode «RSPC» и проверьте вновь найденную цепочку процессов:

Как вы реализуете события в обслуживании таблиц?

Обновление и создание событий в генераторе обслуживания таблиц

  1. Создайте пользовательскую таблицу.
  2. Нажмите на утилиты, перейдите к генератору обслуживания таблиц.
  3. Введите сведения о функциональной группе, укажите номера экранов и нажмите «Сохранить», мы предоставим имя пакета. …
  4. Для событий TMG: В меню нажмите «Среда» -> «Модификации» -> «События».

Как создать мероприятие на BW? Шаг 1) Создание события -> Перейдите в Код транзакции SM62 -> Выберите вкладку BckProcEvnts -> Создать событие.. На снимке выше мы видим, что я создал событие «ZTEST». Введите имя для варианта и нажмите «Создать». На следующем экране введите имя события, которое вы создали в SM62 (на шаге 1).

Как расширить обмен знаниями внутри компании: форматы и распространение знаний

Существует множество способов улучшить обмен знаниями в компании, будь то сочетание различных форматов и подходов или сосредоточение внимания только на нескольких ключевых областях. Для каждого бизнеса набор мероприятий будет разным: некоторым сотрудникам может быть неудобно говорить на собраниях, другие могут быть не уверены в своих способностях к письму. Однако поощрение различных форм передачи знаний и опыта откроет двери для большего интереса и сотрудничества. К возможным форматам относятся:

  •  — основной крупный формат;

  •  — если нужно сформировать какой-то навык;

  •  — от внутренних экспертов для других членов команды;

  •  — форум для разработчиков, во время которого специалисты из разных областей сообща решают какую-либо проблему на время;

  •  — формат «диалога на кухне» с экспертом с возможностью задать вопросы из аудитории;

  •  — может записать любой желающий, через них легко, например, транслировать лучшие практики в профессии и делиться опытом.

У нас много сотрудников, которые очень активно проявляются в своем сообществе. Кто-то ведет телеграм-канал, кто-то ведет блог на YouTube, и мы не видим смысла сворачивать эти инициативы. Наоборот, есть смысл помогать людям делать то же самое внутри компании. Обычно мы поддерживаем их методологически, помогаем упаковать знания в короткие форматы, в то, что очень легко добыть и легко дальше расшерить для коллег. Самое простое, что можно быстро запустить, — это вебинар, митап или воркшоп.

Какой бы формат вы ни выбрали, именно контент — главный способ распространения знаний и предоставления другим сотрудникам возможности обращаться к ним в свободное время. Чем более доступным будет ваш контент и чем больше в него будет вкладываться, тем эффективнее будет обмен знаниями. Контент может быть предназначен только для внутреннего использования через специальные учебные системы или же использоваться, например, в блоге компании, который подпитывает знания как для внутренних, так и для внешних целей. Что бы вы ни выбрали, все должно быть зафиксировано и легко распространяться среди сотрудников.

Ключевую роль в распространении знаний играют технологии: правильная технология может обеспечить потоковую передачу информации, предоставить сотрудникам возможность делиться знаниями и место, где можно оставлять отзывы и взаимодействовать с другими. Здесь ключевую роль может сыграть LMS или LXP-платформа, где буквально все — документы, посты, курсы, программы, сторонние ресурсы, видео и так далее — можно легко упорядочить, открыв сотрудникам общий доступ.

3 вида инструментов командообразования

Управление командообразованием подразумевает плавное увеличение степени вовлеченности сотрудников и раскрытие ценных качеств их личности. Существует 3 вида инструментов тимбилдинга. Их можно использовать как отдельно, так и вместе:

Соревнования и «выживание»

Спортивные мероприятия — очень популярный вариант командообразования. Он помогает эмоционально разгрузиться, выплеснуть накопившийся негатив. Вот примеры таких соревнований:

  • Пейнтбол.
  • Баскетбольные или футбольные матчи.
  • Спартакиады.
  • Бег с препятствиями.
  • «Олимпийские игры» внутри предприятия.
  • Квесты на улице.
  • Преодоление препятствий на полосах, предназначенных для военных.

Часто используют соревнования с применением альпинистского снаряжения на высоте не более 20 м. В таком случае развиваются навыки как самостоятельной, так и командной работы. Царящий на спортивных мероприятиях дух здорового соперничества и азарта, позволяет достичь следующих результатов:

  • Определить работников-лидеров.
  • Развить качества: взаимопомощь, стрессоустойчивость, ответственность.
  • Повысить чувство уверенности в каждом работнике.
  • Развить навыки успешного решения проблем и трудностей в непривычных условиях.
  • Выработать умения, помогающие преодолеть стеснительность, зажатость и страхи.

Совместные занятия спортом улучшают коммуникации внутри группы, стимулируют дальнейший коллективный труд. Для упрощения организации проведения мероприятий есть комплексы или центры, которые занимаются устройством игр для предприятий.

Интеллектуальные мероприятия

Второй по популярности инструмент после спортивных соревнований. Основная задача — повысить скорость мышления, показать уровень эрудированности, сплотить команду. Есть множество интеллектуальных игр для фирм:

  • «Что? Где? Когда».
  • Квесты.
  • «Форт Боярд».

Выбор, чем будут заниматься сотрудники, ограничен только фантазией руководства: искать выход из замкнутого пространства, отвечать на вопросы, играть в «Колонизаторы» или «Мафию» и т. д. В итоге достигается ряд задач:

  • Тренируется память подчиненных.
  • Устанавливаются приятельские отношения.
  • Определяется степень эрудированности и тип мышления каждого члена команды.
  • Развивается креативность и быстрота реакции людей.

Преимущество умственных игр перед спортивными: низкая цена заказа проведения. Можно даже не выбираясь из офиса купить мероприятие в event-агентстве. Если же не хочется привлекать посредников, то вот варианты для досуга:

  • «Крокодил». Каждый участник беззвучно должно изобразить предмет, явление природы или героя фильма.
  • «Узнаем друг друга». Сотрудникам раздаются ручки и небольшие листы бумаги. Задача: написать факт о себе. Затем все листочки складываются шляпу/ящик/корзинку. После начинают доставать их по одному и зачитывать. Необходимо угадать, к какому человеку относится факт. Можно указывать также любимые книги, блюда, писателей и иные особенности, которые позволяют получше узнать других.
  • «Элиас». Команда делится на 2 группы, каждой вручаются карточки с написанными словами. Выбираются ведущие. Они должны при помощи не однокоренных ответов на вопросы, антонимов или синонимов давать объяснения словам. Засекается время, например, 2 минуты. Победа за той командой, которая угадает больше всего слов в отведенный срок.

Интеллектуальные мероприятия

Бизнесмены с ограниченными денежными ресурсами устраивают шашечные и шахматные турниры, соревнования в настольные игры «Уно», «Испорченный телефон» или «Кто я?» и т. д.

Творческие мероприятия

Они позволяют сотрудникам отдохнуть и проявить креативность. Что можно организовать:

  • Мастер-классы по визажу или кулинарные.
  • Занятия лепкой из глины.
  • Уроки рисования. Сотрудники пишут картины в определенной тематике.
  • Совместная фотосессия в оригинальных костюмах.
  • Арт-терапия как способ выявления межличностных конфликтов в команде. Используется песок, карандаши, краски.
  • Использование техники декупаж для создания предметов.

В творческих занятиях нет азарта или конкуренции. Они очень сильно сплачивают коллектив. Их проводят либо в своем офисе, либо арендуют помещение и приглашают тренера. Конкретный вид мероприятия зависит от состава команды, нужно учитывать возраст и пол. Вряд ли, например, женщин привлечет занятие по робототехнике, а мужчин — мастер-класс по вязанию.

jQuery — Отмена стандартного поведения события

Некоторые элементы в HTML имеют стандартное поведение. Например, когда пользователь нажимает на ссылку, он переходит по адресу указанному в атрибуте . Если вам это действие не нужно, то его можно отменить. Для отмены стандартного поведения необходимо вызвать в обработчике этого события метод объекта .

Например, отменим стандартное поведение всех ссылок на странице, имеющих класс :

$('a.service').on('click',function(e){
  //отменяем стандартное действие браузера
  e.preventDefault();
  // действия, которые будет выполнять ссылка
  ...
});

Что такое всплытие и как его остановить

Кроме отмены стандартного действия, в механизме событий есть ещё такое понятие как всплытие. Оно заключается в том, что когда браузер генерирует событие, то он это делает не только для текущего элемента (цели), но и для всех его потомков включая родителя:

текущий элемент (цель) -> родительский элемент цели -> прародительский элемент -> ... -> document -> window

В jQuery бывают сценарии, когда в представленной цепочке у какого-нибудь элемента то же есть обработчик для этого события, который выполнять не нужно. И чтобы это событие не распространилось на этот элемент, его необходимо остановить. Для этого в обработчике нужного элемента необходимо вызвать метод объекта . После вызова этого метода событие остановится, и не будет всплывать.

Например, необходимо чтобы при поднесении курсора к элементу с классом , его содержимое становилось оранжевым цветом.

<div class="mark">Некоторый текст...<span class="mark">фрагмент...</span>...продолжение...</div>
...
<script>
$('.mark').on('hover',
  function(e){
    e.stopPropagation();
    $(this).css('color',orange);
  },
  function(e){
    e.stopPropagation();
    $(this).css('color',black);
  }
});
</script>

В данном случае если не указывать метод , то при поднесении курсора к элементу с классом данное событие возникнет не только у него, но и у всех его родительских элементов. А это в этом примере приведёт к тому, что изменится цвет не только текста, заключенного в , но и всего абзаца.

Если вам необходимо отменить стандартное поведение браузера и остановить всплытие события, то в jQuery вместо вызова двух этих методов можно просто вернуть в качестве результата функции значение .

$('a').on('click', function(e){
  //e.preventDefault();
  //e.stopPropagation();
  ...
  return false;
});

Пример

// установим обработчик события change, элементу с идентификатором foo

$(«#foo»
)
.change
(function
()
{

alert
(«Элемент foo был изменен.»
)
;

}
)
;

// вызовим событие change на элементе foo

$(«#foo»
)
.change
()
;

// установим еще один обработчик события change, на этот раз элементам

// с классом block. В обработчик передадим дополнительные данные

$(«.block»
)
.change
({
a:
12
,
b:
«abc»
}
,
function
(eventObject)
{

var
externalData =
«a=»
+
eventObject.data
.a
+
«, b=»
+
eventObject.data
.b
;

alert
(«Элемент с классом block был изменен. »
+

«В обработчик этого события переданы данные: »
+
externalData )
;

}
)
;

jQuery метод .change()
привязывает JavaScript
обработчик событий «change»
(изменение элемента), или запускает это событие на выбранный элемент. Метод используется с элементами HTML формы.

Событие «select»
срабатывает, когда значение элемента формы меняется (элементы , и элементы )

Обращаю Ваше внимание, что для таких элементов как радио-кнопки, флаговые кнопки и элементы раскрывающегося списка, событие «select»
вызывается немедленно после того как пользователь сделает выбор, а для элементов с текстовым содержимым откладывается до того момента пока элемент управления не потеряет фокус (например, такие элементы как с текстовым типом type =
«text»
, или )

Если значение элемента изменяется с использованием JavaScript
, например с использованием jQuery метода .val() , то событие «change»
не вызывается.

Event: input

The event triggers every time after a value is modified by the user.

Unlike keyboard events, it triggers on any value change, even those that does not involve keyboard actions: pasting with a mouse or using speech recognition to dictate the text.

For instance:

If we want to handle every modification of an then this event is the best choice.

On the other hand, event doesn’t trigger on keyboard input and other actions that do not involve value change, e.g. pressing arrow keys while in the input.

Can’t prevent anything in

The event occurs after the value is modified.

So we can’t use there – it’s just too late, there would be no effect.

Геймификация

Геймификация — это адаптация игровых механик для неигровых процессов, в частности для образования. Она позволяет увлекать участников через придуманную разработчиком программы историю или метафору. При этом не происходит отрыва от основной задачи обучения, под неё можно подстроиться, даже если речь идёт об уже сложившейся программе. Участники не покидают привычную реальность, но могут примерить в ней игровую роль и быстро получить обратную связь через систему вознаграждений — баллов, рейтингов и так далее.

Для чего подходит

Для любых видов обучения как детской, так и взрослой аудитории.

Как применяется

Несколько примеров наглядно показывают, что использовать такую механику можно в разных сферах.

Игровой персонаж в курсе. Обычно это придуманный герой с некой предысторией, и он проходит весь путь обучения вместе со студентами, постоянно оказываясь в тех ситуациях, которые изучаются на курсе, где ему надо сделать тот или иной выбор. Студенты, делая выбор за героя, учатся на его ошибках. Например, в магистерском курсе ИТМО «Личная эффективность и управление временем» мы с коллегами ввели персонажа Арину. У Арины есть свои цели, ценности и ресурсы, на каждом семинаре она попадает в ситуацию выбора, который за неё делают учащиеся. В конце курса Арина либо достигает цели, либо остаётся с теми же знаниями, которые были на старте, или даже ухудшает свою жизнь. Персонаж проходит собственный путь, и его опыт становится полезным всей группе.

Курс, построенный по сценарию сюжетной истории. В качестве примера приведу удачный кейс моих коллег: они сделали корпоративный welcome-тренинг для новых сотрудников. Он представлял собой видеокурс с сюжетом про первый день работы. Курс знакомил с ценностями компании и позволял ориентироваться в основной полезной информации. В видеоряде были стоп-кадры, в которых зрителям следовало сделать выбор в непростой ситуации. Например, как реагировать и куда бежать, если в лифте тебя, такого красивого и нарядного, случайно облили кофе?

Курс в формате игры. Отличный пример геймификации — игра Join TPU, созданная несколько лет назад для абитуриентов Томского политехнического университета в качестве альтернативы дню открытых дверей. С помощью видеоквеста будущие студенты вуза проходили миссии, открывали новые локации и в формате игры узнавали особенности обучения в ТПУ. Каждому новому игроку присваивали стартовые баллы, а заработать новые можно было через развитие своих скиллов. Участники игры получали возможность познакомиться с университетом и почувствовать себя студентом уже во время обучения в школе, выиграть призы и получить дополнительные четыре балла при поступлении в вуз

Если обычное офлайн-мероприятие такого формата набирает от силы несколько сотен участников, то к онлайн-игре присоединились тысячи — вуз привлёк к себе внимание, выделился и, возможно, повысил желание выбрать его для поступления.

Pressmaster / Shutterstock

Итого

События изменения данных:

Событие Описание Особенности
Изменение значения любого элемента формы. Для текстовых элементов срабатывает при потере фокуса. В IE8- на чекбоксах ждёт потери фокуса, поэтому для мгновенной реакции ставят также -обработчик или .
Событие срабатывает только на текстовых элементах. Оно не ждёт потери фокуса, в отличие от . В IE8- не поддерживается, в IE9 не работает при удалении символов.
Только для IE10-. Универсальное событие для отслеживания изменения свойств элементов. Имя изменённого свойства содержится в . Используют для мгновенной реакции на изменение значения в старых IE. В IE9 не срабатывает при удалении символов.
Срабатывают при вставке/копировании/удалении текста. Если в их обработчиках отменить действие браузера, то вставки/копирования/удаления не произойдёт. Вставляемое значение получить нельзя: на момент срабатывания события в элементе всё ещё старое значение, а новое недоступно.

Ещё особенность: в IE8- события , , и аналогичные не всплывают. То есть, обработчики нужно назначать на сам элемент, без делегирования.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Люкс-хост
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: