добавить или удалить функции из обработчика событий onSubmit?

StackOverflow https://stackoverflow.com/questions/8982087

Вопрос

У меня есть следующий код:

function showAddrBox() {
    var prompt = document.getElementById('addr_prompt');
    prompt.style.display = 'block';
    document.generic_form.address.style.display = 'block';
    document.generic_form.onsubmit = validateAddrForm;
}

function hideAddrBox() {
    var prompt = document.getElementById('addr_prompt');
    prompt.style.display = 'none';
    document.generic_form.address.style.display = 'none';
    document.generic_form.onsubmit = null;
}

Проблема в том, что иногда к onSubmit прикрепляются дополнительные функции, которые я хочу сохранить.Я хочу иметь возможность добавлять и удалять отдельные функции из события onSubmit, а не просто устанавливать их с помощью «onsubmit =».Другими словами, мне нужен способ выполнить что-то вроде этого:

document.form.onsubmit += function;
document.form.onsubmit -= function;

Есть идеи?

Это было полезно?

Решение

Используйте element.addEventListener("eventName", callbackFunction, false) и element.removeEventListener("eventName", callbackFunction).

Откуда EventName - это имя обработчика без «на».Так что onsUbmit становится отправным.

Для документирования двух функций см.:

Другие советы

В режиме Quirksmode есть замечательная статья о расширенной регистрации на мероприятия.

Краткая форма:Вы можете связать несколько событий, используя addEventListener (attachEvent в старых версиях IE).

if (someform.addEventListener) {
  someform.addEventListener('submit', somefunc, false);
} else {
  someform.attachEvent('onsubmit', somefunc);
}

Чтобы удалить их, вы можете использовать removeEventListener и detachEvent соответственно.


Довольно быстро вы начнете раздражаться от постоянного набора текста. addEventListener и attachEvent, и вы можете рассмотреть возможность создания общего кода для привязки событий за вас.К счастью, другие программисты придерживались той же идеи, и существует множество библиотек, которые элегантно управляют событиями. jQuery обычно является предпочтительной библиотекой, поскольку привязка события так же проста, как:

$('#formid').submit(somefunc);

общий метод привязки событий:

$('#formid').on('submit', somefunc);

для отвязки вы можете использовать:

$('#formid').off('submit', somefunc);

Хотя все это хорошо описано в API jQuery.

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

Вы можете упомянуть два или более функций для формы, как ниже.

<form name="formaname" onsubmit="function1(),function2()">

Подробнее на onsUbmit

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top