Onchange JavascripT Не працює належним чином. Обробник або джерело події change Javascript select onchange виклик події

💖 Подобається?Поділися з друзями посиланням

jQuery метод .change() прив'язує JavaScriptобробник подій "change"(зміна елемента) або запускає цю подію на вибраний елемент. Метод використовується з елементами HTML форми.

Подія "select"спрацьовує, коли значення елемента форми змінюється (елементи і елементи ). Звертаю Вашу увагу, що для таких елементів як радіо-кнопки, прапорові кнопки та елементи списку, що розкривається, подія "select"викликається негайно після того, як користувач зробить вибір, а для елементів з текстовим вмістом відкладається до того моменту, поки елемент керування не втратить фокус (наприклад, такі елементи як з текстовим типом type = "text", або ).

Якщо значення елемента змінюється за допомогою JavaScriptнаприклад з використанням jQuery методу.val() , та подія "change"не викликається.

jQuery синтаксис: Синтаксис 1.0: $(selector ).change() // метод використовується без параметрів $(selector ).change( handler) handler- Function (Event eventObject) Синтаксис 1.4.3: $(selector ).change( eventData, handler) eventData- Anything handler- Function (Event eventObject)

Звертаю Вашу увагу, що метод .change() , що використовується разом із функцією, переданою як параметр ( handler) є, коротким записомметоду .on() , а без параметра є коротким записом методу .trigger() :

$(selector ).on(" change", handler) $(selector ).trigger(" change")

Доданий у версії jQuery 1.0 (синтаксис оновлено у версії 1.4.3) Значення параметрів Приклад використання Використання jQuery методу .change() (без параметрів і з функцією) $(document ).ready(function ()( $("button ")). click(function ()( // задаємо функцію при натисканні на елемент $("textarea ").change(); // викликаємо подію change на елементі ) ); $(this ).change(function ()( // задаємо функцію при спрацюванні події change на елементі з яким взаємодіє користувач $("p").css("display", "block") // задаємо, що елемент

стає блоковим .text("Щось змінилося ") // додаємо текстовий вміст .fadeOut(750 ); // плавно змінюємо прозорість для елемента)); ))); Клік 1 2

1 2 3

1 2



Зміни мене

У цьому прикладі з використанням методу jQuery .change() ми при натисканні на елемент (кнопка) викликаємо подію "change"на елементі. Замість цього елемента можна було використовувати будь-який інший елемент у цьому прикладі.

Викликається чи відстежується JavaScript подія"change" (подія зміни форми).

  • version added: 1.0.change(handler(eventObject))

    handler(eventObject)

    Тип: Function()

    Функція-обробник події.

  • version added: 1.4.3.change(, handler(eventObject))

    eventData

    Тип: Object

    Об'єкт із даними, які будуть передані до оброблювача.

    handler(eventObject)

    Тип: Function()

    Функція-обробник події

  • version added: 1.0.change()

Цей метод - це скорочення от.on("change", handler), и.trigger("change").

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

Наприклад, у нас є наступний HTML:

Option 1 Option 2 Trigger the handler

Оброблювач події може бути прикріплений таким чином:

$(".target").change(function() ( alert("Handler for .change() called."); ));

Тепер при зміні значення елемента селект ми побачимо повідомлення. Також воно виникне у разі зміни інших полів, але після перемикання на інші. Якщо елемент втрачає фокус, зміни не були зроблені, то подія не відбувається. Для того, щоб самим викликати цю подію, достатньо викликати метод.change() без аргументів:

$("#other").click(function() ( $(".target").change(); ));

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

Приклади:

Приклад: відстежуємо зміни селекту боксу.

change demo div ( color: red; ) Chocolate Candy Taffy Caramel Fudge Cookie $("select") .change(function () ( var str = ""; $("select option:selected").each(function() ( str += $(this).text() + " "; )); $("div").text(str); )) .change();

Обробник OnChange викликається при зміні будь-якого поля введення або натискання будь-якої кнопки.

Аргумент Name містить ім'я поля введення або кнопки у нижньому регістрі.

Приклад: Procedure OnChange(Name: String); Begin // Якщо змінені поля ціна чи кількість, то розраховуємо суму If Name="price" Or Name="cnt" Then Summa:= RoundMul(Price, Cnt, 2); // Якщо змінено поле сума, то розраховуємо ціну. If Name = "summa" Then Price: = If (Cnt = 0, 0, RoundDiv (Summa, Cnt, 2)); End;

Аналогічний ефект можна отримати за допомогою обробників OnPriceChange, OnCntChange, OnSummaChange.

Приклад: Procedure OnPriceChange; Begin Summa: = RoundMul (Price, Cnt, 2); End; Procedure OnCntChange; Begin Summa: = RoundMul (Price, Cnt, 2); End; Procedure OnSummaChange; Begin Price:= If(Cnt=0, 0, RoundDiv(Summa, Cnt, 2)); End;

Цей обробник зручно використовувати при організації модульності, тому що він збирає інформацію практично про всі події. Наприклад:

Var BaseClass: Variant; Procedure OnCreate; Begin BaseDocument.Init(Self); // Створення базового класу та обмін із ним посиланнями. Ініціалізація документа. End; Procedure OnChange(Name: String); Begin BaseClass.OnChange(Name); // Передача подій базовому класу End;

Або приклад модульності з використанням синглтона (властивість модуля на вкладці редактора Опис):

Procedure OnCreate; Begin BaseClass.OnCreate(Self); // Ініціалізація документа. End; Procedure OnChange(Name: String); Begin BaseClass.OnChange(Self, Name); // Передача подій базовому класу. End;

_element"> element HTML Choose an ice cream flavor: Select One … Chocolate Sardine Vanilla

Body ( display: grid; grid-template-areas: "select result"; ) select ( grid-area: select; ) .result ( grid-area: result; )

JavaScript const selectElement = document.querySelector(".ice-cream"); selectElement.addEventListener("change", (event) => (const result = document.querySelector(".result"); result.textContent = `You like $(event.target.value)`; )); Result Text input element

Для деяких елементів, включаючи , зміна значення не дає змоги контролювати необхідний focus.

HTML JavaScript const input = document.querySelector("input"); const log = document.getElementById("log"); input.addEventListener("change", updateValue); function updateValue(e) ( log.textContent = e.target.value; ) Result Specifications Specification Status
HTML Living Standard
Визначення "зміни" в тому specification.
Living Standard
Browser compatibility

Компактність таблиці на цій сторінці генерується з структурованих даних. Якщо ви знайдете, щоб дізнатися про ваші дані, клацніть на https://github.com/mdn/browser-compat-data і пишуть.

Update compatibility data on GitHub

Desktop Mobile Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome для Android Firefox for Android Opera for Android Safari on iOS Samsung Internetonchange
Chrome Full support YesEdge Full support 12Firefox Full support YesIE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
Legend Full support Full support

Різні браузери не можуть бути наскільки вони змінюються або повинні бути поставлені для певних видів діяльності. Для прикладу, keyboard navigation in елементи, що не оголошено, змінюють значення в Gecko until the user hit Enter або switched focus away from the (see bug 126379). Since Firefox 63 (Quantum), цей behavior is consistent між all major browsers, however.



Розповісти друзям