Jquery події input. Події форми. Обробка подій за допомогою методів jQuery

The inputеvent fires when the value of element is used для створення interactive controls for web-based forms in order to accept data from the user; На основі різних типів введених даних і керування widgets є доступні, залежно від вашого пристрою і користувача. "> , елемент керує тим, що дає змогу menu options"> ...

Приклад, у якому розглянемо, як з допомогою події change отримати значення вибраного елемента input з type , рівним radio:

Windows Linux macOS ...

jQuery - Подія вибору

Подія вибору select генерується браузером, коли користувач усередині елементів input з type="text" або textarea виділяє текст.

$("#target").select(function() ( console.log("Викликаний обробник події select"); ));

jQuery – Подія відправлення форми (submit)

Подія submit виникає у елемента, коли користувач намагається надіслати форму. Ця подія може бути додана лише до елементів form .

Приклад використання події submit:

...
...

Програмний виклик надсилання форми:

$("#feedback").submit(); $("#feedback").trigger("submit");

jQuery - Подія прокручування (scroll)

Для відстеження стану скролінгу в jQuery використовується подія scroll.

Наприклад, повісимо на подію прокручування сторінки функцію, яка буде відображати елемент з класом scrollup , якщо величина прокручування більше 200px і приховувати його, якщо значення прокручування менше цієї величини.

// короткий запис функції $(window).scroll(function() ( // дії при скролінг сторінки... if ($(this).scrollTop()>200) ( $(".scrollup").fadeIn() ; ) else ( $(".scrollup").fadeOut(); ) ));

jQuery - Подія зміни розмірів вікна (resize)

Для прослуховування події зміни вікна браузера використовують resize:

Наприклад, створимо обробник, який буде при зміні вікна браузера виводити на кінець сторінки її ширину та висоту:

$(window).resize(function() ( $("body").append("

Ширина x Висота = "+window.innerWidth+"x"+window.innerHeight+"

"); });

jQuery - Скасування стандартної поведінки події

Деякі елементи HTML мають стандартну поведінку. Наприклад, коли користувач натискає посилання, він переходить за адресою вказаною в атрибуті href . Якщо вам ця дія не потрібна, то її можна скасувати. Для скасування стандартної поведінки необхідно викликати в обробнику цієї події метод preventDefault об'єкта event.

Наприклад, скасуємо стандартну поведінку всіх посилань на сторінці, що мають клас service:

$("a.service").on("click",function(e)( //скасовуємо стандартну дію браузера e.preventDefault(); // дії, які виконуватиме посилання... ));

Що таке спливання і як його зупинити

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

Поточний елемент (мета) -> батьківський елемент мети -> прабатьківський елемент -> ... -> document -> window

У jQuery бувають сценарії, коли у представленому ланцюжку у якогось елемента те ж є обробник для цієї події, яку виконувати не потрібно. І щоб ця подія не поширилася на цей елемент, її необхідно зупинити. Для цього в обробнику потрібного елемента необхідно викликати метод stopPropagation об'єкта event. Після виклику цього методу подія зупиниться і не спливатиме.

Наприклад, щоб піднести курсор до елемента з класом mark , його вміст ставав помаранчевим кольором.

Деякий текст... фрагмент......продовження...
...

В даному випадку якщо не вказувати метод stopPropagation, то при піднесенні курсору до елемента span з класом mark ця подія виникне не тільки у нього, але й у всіх його батьківських елементів. А це в цьому прикладі призведе до того, що зміниться колір як тексту, укладеного в span , а й усього абзацу.

Якщо вам необхідно скасувати стандартну поведінку браузера і зупинити спливання події, то в jQuery замість виклику двох цих методів можна просто повернути як результат функції значення false .

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

Додавання подій до динамічно створених об'єктів

Для того, щоб повісити подію на елемент, якого ще немає, можна використовувати наступну конструкцію функції:

$(document).on(eventName, selector, handler); // document або будь-який інший існуючий батьківський елемент // eventName – ім'я події // selector – селектор, що здійснює фільтрацію нащадків, для яких необхідно запустити обробник події // handler – обробник події

Це можна здійснити завдяки тому, що подія спливає, і, отже, виникає в усіх предків цього елемента. А об'єкт, до якого спливають події на сторінці, є document . Тому здебільшого вибирають саме його. Після цього знаючи селектор, функція on може програмно відібрати серед елементів (елемента, який викликав цю подію (target) та всіх його предків, включаючи батька) ті, які відповідають йому. І потім для всіх відібраних елементів виконати вказаний у функції on обробник. Події, за допомогою яких обробка події переноситься на інший елемент (предок), називається в jQuery ще процесом делегування події.

Наприклад, додамо подію до елемента, якого ще немає на сторінці:

Делегування може застосовуватися не тільки для обробки подій динамічно створених об'єктів, але і для того, щоб не прив'язувати до кожного елемента (якщо їх на сторінці може бути багато) обробник.

Наприклад, заборонимо в коментарях переходити за зовнішніми посиланнями (такі дії перенаправлятимемо на сторінку away):

$(document).on("click","#comment a",function(e) ( if(!(location.hostname === this.hostname || !this.hostname.length))) ( e.preventDefault( );location.href="away?link="+encodeURIComponent($(this).attr("href")); ) ));

jQuery - Видалити обробник події

Видалення обробників події здійснюється за допомогою методу off. При цьому за допомогою нього можна видалити ті обробники, які додані за допомогою методу on .

Виклик методу off без аргументів зніме у зазначених елементів усі додані до них обробники подій.

Наприклад, відключимо всі обробники у елементів із класом link:

$(".link").off();

Наприклад, видалимо подію click у всіх елементів із класом link:

$(".link").off("link");

Спеціальний селектор (**) дозволяє видалити лише делеговані події із збереженням не делегованих:

$(".link").off("click","**");

Видалити лише зазначені делеговані події (за допомогою селектора):

// додавання делегованої події $("ul").on("click","li", function()( // виводимо в консоль контент елемента li console.log($(this).text()); )) ; // Видалення делегованої події $("ul").off("click","li");

Видалити всі обробники openModal делегованої події click у просторі імен modal для елементів з класом show:

$("body").on("click.modal", ".show", openModal);

Створення події користувача

Для створення подій користувача в jQuery використовуються методи on і trigger .

Принцип створення спеціальної події jQuery розглянемо за допомогою такого прикладу:

...

Минулої теми розглядалися події, що виникають при натисканні клавіш. У цьому темі ми розглянемо інші події форми. У тому числі надсилання форми на сервер.

Елемент у фокусі

Коли елемент форми виявляється у фокусі, виникає подія focus, а коли елемент виходить з фокусу, спрацьовує подію blur. Створимо поле для введення та виведемо в консоль текст при отриманні ним фокусу та при виході з фокусу:

HTML код:

Немає сенсу використання цих подій для зміни стилю елемента. Для цього в CSS існує псевдоклас focus.

Введення значення

Подія inputвиникає, коли користувач друкує текст у полі для введення. Воно спрацьовує під час додавання або видалення кожного символу, а також копіювання тексту в поле для введення. У деяких браузерах воно працює незвичайно: при кожному введенні символу створюється подія blur, після цього виконується обробник події input, а потім створюється подія focus. Якщо обробників подій focus та blur немає, то в цьому немає проблеми. Але якщо вони є, вони будуть спрацьовувати при кожному додаванні символу.

Додамо на сторінку ще один тэг і виведемо його значення під час введення тексту:

HTML код:

JavaScript:

28
29
30
31
32

var newv = document.getElementById("new_value"); newv.onchange = function () ( console.log("Значення змінено на: "+newv.value); );

Надсилання форми

Подія submit спрацьовує при надсиланні форми на сервер. Воно використовується для перевірки даних, які користувач увійшов у форму. В обробнику перевіряються значення елементів форми, і якщо якісь значення введені неправильно, робиться скасування відправки форми. При цьому зазвичай виводиться повідомлення, в якому зазначається, що потрібно виправити.

Помістимо створені теги у форму та додамо кнопку відправлення форми:

HTML код:

У попередніх прикладах елементи форми вже були знайдені, тому обробник повторний пошук не проводиться.

Якщо форма заповнена правильно, тобто у всіх полях є хоча б два символи, то браузер спробує запустити файл, вказаний в атрибуті action, і виникне помилка, тому що такого файлу немає. Але в цьому немає жодного ризику, тому не треба боятися перевіряти роботу скрипта. Якщо в одному з полів введено менше двох символів, з'явиться повідомлення та відправка буде скасована. Якщо перевірок досить багато, то можна для кожної перевірки виводити своє повідомлення та скасовувати надсилання форми.

Віруси