Если вы говорите о проверке формы, регулярное выражение для проверки правильного значения, а также правильных данных будет чрезвычайно сложным из-за разных стран и стандартов поставщиков.
Я интерпретирую этот вопрос как поиск широко допустимого шаблона, который может быть несовместим с внутренним состоянием, например, с допустимым набором чисел, но не подтверждая, что
Северная Америка проста, а для международных я предпочитаю использовать «идиоматический» шаблон, который охватывает способы, с помощью которых люди укажите и запомните их номера:
^((((\(\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
Это может быть предвзятым, поскольку мой опыт ограничен Северной Америкой, Европой и небольшим количеством Азии.
Поскольку имя, которое вы дали функции обработчика, находится внутри этой функции, другой обработчик не сможет получить к ней доступ.
Итак, что вы должны сделать, это определить функцию с именем в области видимости, которая является локальной для всего кода, который должен получить к ней доступ.
Вы должны привести упрощенный пример, который полностью отражает проблему при публикации вопроса. Я дам упрощенный кодовый ответ и надеюсь, что быстрое рассмотрение я сделал, если ваш код представлен здесь.
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);
}
})