Удалите недопустимые символы из атрибута href=tel: с помощью jQuery.

У меня есть телефонная ссылка HTML5:

<a href="tel:+44 (0) 1234 567 890">

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

Я хочу, чтобы атрибут href был написан так, чтобы он был совместим со всеми мобильными устройствами:

<a href="tel:+441234567890">

Как я могу использовать jQuery для удаления пробелов и символов (0) из атрибута href?


person user1794295    schedule 04.06.2014    source источник


Ответы (2)


Вы можете использовать это, чтобы исправить все ссылки, href которых начинается с tel: :

$('a[href^="tel:"]').attr('href', function(_,v){
    return v.replace(/\(0\)|\s+/g,'')
});

Демонстрация

При этом используется функция replace, принимающая регулярное выражение в качестве параметра. Регулярное выражение, которое я использую, можно понять так:

  • \(0\) : "(0)" с экранированными скобками
  • | : or
  • \s+ : хотя бы один пробел

Флаг g в конце регулярного выражения заставляет его применяться более одного раза.

Таким образом, он заменяет (0) или пробелы пустой строкой.

person Denys Séguret    schedule 04.06.2014
comment
Пропущена точка с запятой в одной строке. - person Sean Kendle; 04.06.2014
comment
@SeanKendle Это вопрос стиля. Вы можете добавить его, если хотите, но это не обязательно. - person Denys Séguret; 04.06.2014
comment
Отлично спасибо! Не могли бы вы вкратце объяснить, что делает код после v.replace? - Я не могу понять персонажей... - person user1794295; 04.06.2014
comment
@ user1794295 Я расширил свой ответ, чтобы объяснить - person Denys Séguret; 04.06.2014
comment
@dystroy отлично - теперь очень ясно и легко понять, спасибо. - person user1794295; 05.06.2014

var l=$("a[href^='tel:']");
l.attr("href",l.attr("href").replace(/\s+/g,'').replace("(0)", ""));

ДЕМО

person Charaf JRA    schedule 04.06.2014