Удаление слушателя из другого слушателя

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

Я интерпретирую этот вопрос как поиск широко допустимого шаблона, который может быть несовместим с внутренним состоянием, например, с допустимым набором чисел, но не подтверждая, что

Северная Америка проста, а для международных я предпочитаю использовать «идиоматический» шаблон, который охватывает способы, с помощью которых люди укажите и запомните их номера:

^((((\(\d{3}\))|(\d{3}-))\d{3}-\d{4})|(\+?\d{2}((-| )\d{1,8}){1,5}))(( x| ext)\d{1,5}){0,1}$

Североамериканский образец гарантирует, что если одна скобка включена, то и есть. Международные счета для необязательного первоначального «+» и кода страны. После этого вы находитесь в идиоме. Допустимыми совпадениями были бы:

  • (xxx)xxx-xxxx
  • (xxx)-xxx-xxxx
  • (xxx)xxx-xxxx x123
  • 12 1234 123 1 x1111
  • 12 12 12 12 12
  • 12 1 1234 123456 x12345
  • +12 1234 1234
  • +12 12 12 1234
  • +12 1234 5678
  • +12 12345678

Это может быть предвзятым, поскольку мой опыт ограничен Северной Америкой, Европой и небольшим количеством Азии.

0
задан m.aslan 24 March 2019 в 19:40
поделиться

1 ответ

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

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

Вы должны привести упрощенный пример, который полностью отражает проблему при публикации вопроса. Я дам упрощенный кодовый ответ и надеюсь, что быстрое рассмотрение я сделал, если ваш код представлен здесь.

outerElement.addEventListener("some_event", function() {
    var innerElementA = document.getElementById("elementA");
    var innerElementB = document.getElementById("elementB");

    innerElementA.addEventListener("some_event", handlerA);
    innerElementB.addEventListener("some_event", handlerB);

    function handlerA(event) {
       // some code
    }
    function handlerB(event) {
       // some code

       // remove the other listener
       innerElementA.removeEventListener("some_event", handlerA);
    }
})
0
ответ дан ziggy wiggy 24 March 2019 в 19:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: