Как скрыть часть номера телефона на сайте

Как можно скрыть часть номера телефона (например, последние четыре цифры заменить на X), а при нажатии показать?

<span class="phone_number">+74951182647<span class="phone_number_active"> Показать</span></span>

Kromster's user avatar

Kromster

13.2k12 золотых знаков41 серебряный знак70 бронзовых знаков

задан 11 июл 2018 в 20:57

Sevastopol''s user avatar

Sevastopol’Sevastopol’

27.7k12 золотых знаков66 серебряных знаков133 бронзовых знака

$(".phone_number .show").click(function(){
  var $parent = $(this).closest(".phone_number");
  $parent.find(".value").text($parent.data("phone"));
  $(this).hide();
  $parent.find(".hide").show();
});

$(".phone_number .hide").click(function(){
  var $parent = $(this).closest(".phone_number");
  var phone = $parent.data("phone");
  phone = phone.substring(0, phone.length - 4) + "xxxx";
  $parent.find(".value").text(phone);

  $(this).hide();
  $parent.find(".show").show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="phone_number" data-phone="+74951182647">
  <span class="value">+7495118xxxx</span>
  <span class="show">Показать</span>
  <span class="hide" style="display:none;">Не показать</span>
</span>

ответ дан 11 июл 2018 в 21:17

0

Вот максимально настраиваемое решение, можете экспериментировать с настройками как угодно:

$(function(){
let holder=$('.phone_number'),
button=$('.phone_number_active'),
number=holder.text(),
symbolsForHide=4,
show=()=>{
  holder.text(number)
  button.removeClass('show').text('Скрыть')
},
hide=()=>{
  holder.text(number.replace(new RegExp('(.+).{'+symbolsForHide+'}$'),"$1"+'x'.repeat(symbolsForHide)))
  button.addClass('show').text('Вскрыть')
}
button.click(function(){
  if($(this).hasClass('show')) show()
  else hide()
})
hide()
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="phone_number">+74951182647</span> <span class="phone_number_active show">Показать</span>

ответ дан 12 июл 2018 в 7:41

Diskyp's user avatar

DiskypDiskyp

1,5228 серебряных знаков18 бронзовых знаков

2

Как скрыть часть номера или почты и показывать при нажатии на кнопку — лучшее решение, которое я нашел. Задача в принципе простая — отслеживать цели потенциальных клиентов в системе аналитики по событию. И периодически требуется в работе любому, кто занимается интернет-маркетингом

Сначала решение, а потом болтовня и рассказы о том, как это было…

Первая часть кода — условная разметка для удобства (можно не обращать внимания)

 
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
       

После библиотеки подключаем сам скрипт, который имеет следующий вид:

Вторая часть кода — условная разметка для удобства (можно не обращать внимания)

 
    
<script>
jQuery(document).ready(function($){
$.fn.textToggle = function(cls, str) {
return this.each(function(i) {
$(this).click(function() {
var c = 0, el = $(cls).eq(i), arr = [str,el.text()];
return function() {
el.text(arr[c++ % arr.length]);
}}());
})};
$(function(){
$('.sh_nmr').textToggle(".sh_nmr","").click();
$('.sh_nmr').textToggle(".num_hide","ХХХХХХХ").click();
});
});
</script>
       

В этом скрипте Вам нужны в будущем только две предпоследние строки:

 
    
        $('.sh_nmr').textToggle(".sh_nmr","").click();
        $('.sh_nmr').textToggle(".num_hide","ХХХХХХХ").click();
    

Первая строка отвечает за скрытие слова ПОКАЗАТЬ после нажатия. Вторая — за замену части номера, ну или всего, если Вы немного переделаете.
Чтобы скрипт работал, Вам нужно свой номер телефона, часть которого Вы хотите скрыть, обернуть в некоторые теги и добавить кнопку ПОКАЗАТЬ. Выглядеть номер с кодом должен примерно так:

Третья часть кода — условная разметка для удобства (можно не обращать внимания)

 
    
        +1234<span class="num_hide">567890</span> <span class="sh_nmr">показать</span>
      

Часть или весь номер нужно заключить в тег span с классом — num_hide. После номера добавить кнопку ПОКАЗАТЬ, заключенную в тег span с классом — sh_nmr

Источник материала

«Детские» примечания

Проверить библиотеку jquery и НЕ подключать, если уже подключена на сайте.
*Важно! Библиотека должна быть вызвана перед кодом, иначе не сработает скрипт.
**На некоторых сайтах скрипты подключаются в подвале для ускорения загрузки страниц
— проверить библиотеку там и разместить между тегами head, ПЕРЕД вызовом скрипта.

Что я искал и как решил

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

Мне же было нужно, чтобы была просто надпись или кнопка «ПОКАЗАТЬ НОМЕР» или «ПОКАЗАТЬ ПОЧТУ», и при клике на эту надпись появлялся бы телефон или почта соответственно.

А так как я в js соображаю не больше, чем в Китайском языке, вернулся к поиску решений.

Нашел еще несколько вариантов, но в итоге все оказались или не рабочими или у меня не хватило терпения ковыряться с ними.

В общем я было уже смирился и снова вернулся к этому варианту и начал работать со стилями.

А ларчик просто открывался

Просто во второй части кода в самом низу, нужно стереть иксы (ХХХХХХХ)… ))

Уважаемые читатели, пожалуйста, не «тычьте» на сайте на эти кнопки в «неположенных» местах )). Дело в том, что на них настроены цели в метрике и если Вы просто для интереса будете нажимать, статистика будет искажена.

Чтобы посмотреть, как это работает, я поместил отдельную кнопку сюда (да и цель на нее установил :-) жмите, сколько хотите)

Кто нажмет на эти кнопки за пределами этой страницы — тот Филипп Киркоров! Если Вы подумываете что-то заказать у меня, то на Вас это правило не действует

Вариант №1 +1234567890 Показать часть номера

Вариант №2 +1234567890 Показать номер

Вариант №3 adres@pochtbl.ru Показать фигу почту, ссылку на вк, ок, фб

Вариант №4 Перейти в раздел «Чердак»Показать ссылку

Кстати о ссылках. Тоже не сразу сработало, чтобы кликабельной была именно ссылка, поэтому делюсь.
Выглядеть будет так:

 
    
        <a href="#"><span class="num_hide">Перейти в раздел "Чердак"</span></a><span class="sh_nmr" style="color:#222222;"><b>Показать ссылку</b></span>
    

В качестве бонуса — как установить в метрике цель на кнопку «показать»

Создаем цель в метрике с произвольным, но лучше с понятным, идентификатором.
Например: a_clik_post_pokzat_tel
Устанавливаем «Тип условия:» на «JavaScript-событие».
Указываем понятное «название» для аналитики.

После чего берем событие:

 
    
 onclick="ym(XXXXXX, 'reachGoal', 'TARGET_NAME'); return true;"
    

Где XXXXXX — это номер счетчика,
а TARGET_NAME — это название события (в нашем случае «a_clik_post_pokzat_tel» без кавычек).

Почитать про события можно >>здесь — яндекс справка<< , там немного, событие на кнопку, на ссылку, на форму и на передачу коммерческих данных.

И вставляем в ссылку (или кнопку — у них одинаковые события).

Получилось так:

 
    
 <a href="#" onclick="ym(37761890, 'reachGoal', 'a_clik_post_pokzat_tel'); return true;">Перейти в раздел "Чердак"</a></span>
    

Полный вариант с событием и с кнопкой «показать» будет выглядеть так:

 
    
 <a href="#" onclick="ym(37761890, 'reachGoal', 'a_clik_post_pokzat_tel'); return true;"><span class="num_hide">Перейти в раздел "Чердак"</span></a><span class="sh_nmr" style="color:#222222;"><b>Показать ссылку</b></span>
    

* Примечание: В ссылках на телефон («tel:») и почту («mailto:») не ставить атрибут (target=»_blank») — выдает ошибку на мобильных.

**Для отслеживания нажатия на ссылку/почту/телефон можно поставить еще одно событие и цель в метрике соответственно ;-)

«Делай дела от сердца» — © Руставели

1 / 1 / 1

Регистрация: 12.06.2015

Сообщений: 50

1

15.05.2016, 18:25. Показов 23963. Ответов 25


Народ подскажите.. Как скрыть номер телефона, например в виде +7 XXX XXXXXXX , а при клике на ссылку Показать, номер отображается +7 999 1112223 Возможно ли это? Или подмену какую-нибудь сделать..

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



WeMeSder

32 / 31 / 21

Регистрация: 13.07.2014

Сообщений: 374

15.05.2016, 18:38

2

Зачем такую бессмысленную лажу делать??

HTML5
1
<p id = "translationTel">+7 XXX XXX XXX <span id = "showTel" onclick = "showSTR('+ 7 123 456 789')">показать</span></p>
Javascript
1
2
3
function showSTR(trueTel) {
document.getElementById('translationTel').replaceData (0 , trueTel.length, trueTel);
}

вроде так должно получиться



0



1 / 1 / 1

Регистрация: 12.06.2015

Сообщений: 50

15.05.2016, 18:58

 [ТС]

3

<p id = «translationTel»>+7 XXX XXX XXX <span id = «showTel» onclick = «showSTR(‘+ 7 123 456 789’)»>показать</span></p>

function showSTR(trueTel) {
document.getElementById(‘translationTel’).replaceD ata (0 , trueTel.length, trueTel);
}

Добавлено через 13 минут
В консоли выдает ошибку.. document.getElementById(…).replaceData is not a function



0



32 / 31 / 21

Регистрация: 13.07.2014

Сообщений: 374

15.05.2016, 19:08

4

Цитата
Сообщение от WeMeSder
Посмотреть сообщение

document.getElementById(‘translationTel’).replaceD ata (0 , trueTel.length, trueTel);

Моя ошибка
document.getElementById(‘translationTel’).firstChild.replaceData (0 , trueTel.length, trueTel);



1



1 / 1 / 1

Регистрация: 12.06.2015

Сообщений: 50

15.05.2016, 19:20

 [ТС]

5

Моя ошибка
document.getElementById(‘translationTel’).firstChi ld.replaceData (0 , trueTel.length, trueTel);

Все равно трабл(( ReferenceError: showSTR is not defined

Добавлено через 5 минут
Не, в этот раз моя ошибка! Все норм работает!



0



WeMeSder

32 / 31 / 21

Регистрация: 13.07.2014

Сообщений: 374

15.05.2016, 19:23

6

попробуйте так:

HTML5
1
<p id = "translationTel">+7 XXX XXX XXX <span id = "showTel" onclick = "document.getElementById('translationTel').firstChild.replaceData (0 , 14, '+7 123 456 789');">показать</span></p>

второй параметр replaceData ’14’ — количество заменяемых символов



0



zahar_92

1 / 1 / 1

Регистрация: 12.06.2015

Сообщений: 50

15.05.2016, 19:24

 [ТС]

7

А как теперь в эту конструкцию всунуть переменную с номером телефона?)))

PHP/HTML
1
<? foreach($contacts['phones'] as $v) { ?><span class="hide-tail"><?= $v ?></span><? } ?>



0



WeMeSder

32 / 31 / 21

Регистрация: 13.07.2014

Сообщений: 374

15.05.2016, 19:33

8

PHP/HTML
1
<? foreach($contacts['phones'] as $v) { ?><span class="hide-tail"><?= $v ?></span><? } ?

>

PHP
1
2
3
4
5
<?
foreach($contacts['phones'] as $v) {
echo '<span class="hide-tail">'.$v.'</span>';
}
?>



0



zahar_92

1 / 1 / 1

Регистрация: 12.06.2015

Сообщений: 50

15.05.2016, 19:37

 [ТС]

9

Если я правильно понимаю, в итоге это должно выглядеть так:

Javascript
1
2
3
function showSTR(trueTel) {
document.getElementById('translationTel').firstChild.replaceData (0 , trueTel.length, trueTel);
}
HTML5
1
2
3
4
5
<p id = "translationTel">+7 XXX XXX XXX <span id = "showTel" onclick = "showSTR('<?
foreach($contacts['phones'] as $v) {
echo '<span class="hide-tail">'.$v.'</span>';
}
?>)">показать</span></p>

Не судите строго, если написал бред))



0



WeMeSder

32 / 31 / 21

Регистрация: 13.07.2014

Сообщений: 374

15.05.2016, 19:52

10

я так понимаю что этот цикл содержит номера телефонов, если это так то:

HTML5
1
2
3
4
5
<?
foreach($contacts['phones'] as $v) {
echo '<p id = "translationTel">+7 XXX XXX XXX <span id = "showTel" onclick = "showSTR('$v')">показать</span></p><br>';
}
?>
Javascript
1
2
3
4
function showSTR(trueTel) {
document.getElementById('translationTel').firstChild.replaceData (0 , trueTel.length, trueTel);
document.getElementById('translationTel').removeChild(document.getElementById('showTel')); // удалит строку "Показать"
}



0



zahar_92

1 / 1 / 1

Регистрация: 12.06.2015

Сообщений: 50

15.05.2016, 20:04

 [ТС]

11

К сожалению при таких раскладах сайт ложится совсем((

Добавлено через 4 минуты
На другом форуме мне подсказали другой вариант

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script>
  $.fn.textToggle = function(cls, str) {
    return this.each(function(i) {
        $(this).click(function() {
            var c = 0, el = $(cls).eq(i), arr = [str,el.text()];
            return function() {
                el.text(arr[c++ % arr.length]);
            }
        }());
 
    })
};
$(function(){
$('.click-tel').textToggle(".hide-tail","+7XXXXXXX").click()
});
</script>
HTML5
1
2
<? foreach($contacts['phones'] as $v) { ?><span class="hide-tail"><?= $v ?></span><? } ?>
<a href="#" class="click-tel">показать телефон</a>

В принципе его работа меня устраивает. Не нравятся два момента: 1. при нажатии на ссылку швыряет вверх страницы и 2. при загрузке сайта, телефон сначала показывается на пару секунд, а потом скрывается.



0



32 / 31 / 21

Регистрация: 13.07.2014

Сообщений: 374

15.05.2016, 20:08

12

Цитата
Сообщение от WeMeSder
Посмотреть сообщение

foreach($contacts[‘phones’] as $v)

думаю дело здесь
где хранятся ваши номера? нужно правильно сложить условие цикла



0



zahar_92

1 / 1 / 1

Регистрация: 12.06.2015

Сообщений: 50

15.05.2016, 20:11

 [ТС]

13

Все номера в БД. Так выглядит рабочий вариант.

PHP
1
2
3
4
5
6
7
8
9
<? if( ! empty($contacts['phones']) ): ?>
            <div class="v-author__contact_items">
                <div class="v-author__contact_title"><?= _t('view', 'Тел.') ?></div>
                <div class="v-author__contact_content j-c-phones">
                     <? foreach($contacts['phones'] as $v) { ?><span class="hide-tail"><?= $v ?></span><? } ?> 
                </div>
                <div class="clearfix"></div>
            </div>
            <? endif; # phones ?>



0



32 / 31 / 21

Регистрация: 13.07.2014

Сообщений: 374

15.05.2016, 20:22

14

Лучший ответ Сообщение было отмечено zahar_92 как решение

Решение

err



1



zahar_92

1 / 1 / 1

Регистрация: 12.06.2015

Сообщений: 50

15.05.2016, 20:29

 [ТС]

15

О чудо! Работает))) WeMeSder красава! Последний вопрос и я отстану! Как сделать чтобы в коде страницы небыло самого номера, а при клике появился?

HTML5
1
2
3
<div class="v-author__contact_content j-c-phones">
<span class="hide-tail" id="translationTel">XXX XXX <em id="showTel" onclick="showSTR('+79189441611')">показать</em></span><span class="hide-tail" id="translationTel">XXX XXX <em id="showTel" onclick="showSTR('79x xxx xxxx')">показать</em></span> 
</div>



0



WeMeSder

32 / 31 / 21

Регистрация: 13.07.2014

Сообщений: 374

15.05.2016, 20:32

16

<? if( ! empty($contacts[‘phones’]) ): ?>
<div class=»v-author__contact_items»>
<div class=»v-author__contact_title»><?= _t(‘view’, ‘Тел.’) ?></div>
<div class=»v-author__contact_content j-c-phones»>
<? foreach($contacts[‘phones’] as $v) { ?><span class=»hide-tail»>XXX XXX <em onclick = «showSTR(‘<?= $v ?>’)»>показать</em></span><? } ?>
</div>
<div class=»clearfix»></div>
</div>
<? endif; # phones ?>

Javascript
1
2
3
function showSTR(value) {
this.parentNode.firstChild.replaceData(0, value.length, value);
}

попробуйте так //<?= $v ?> — номер?



0



1 / 1 / 1

Регистрация: 12.06.2015

Сообщений: 50

15.05.2016, 20:35

 [ТС]

17

Да, <?= $v ?> я думаю номер. При последнем варианте номер прячется, в html отображается при нажатии кнопки Показать ошибка в консоли TypeError: Cannot read property ‘firstChild’ of undefined



0



32 / 31 / 21

Регистрация: 13.07.2014

Сообщений: 374

15.05.2016, 20:37

18

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



0



1 / 1 / 1

Регистрация: 12.06.2015

Сообщений: 50

15.05.2016, 20:39

 [ТС]

19

тот вариант не будет работать с двумя и более номерами..

Это вы про тот, что я написал? На JS? Если да, то это я уже выяснил и теперь пытаюсь выяснить как сделать чтобы он работал с двумя номерами (у меня на странице их 2). Написал автору скрипта вопрос, но пока молчит.. Ваш вариант хорош, но номер присутствует в коде и это не очень((



0



32 / 31 / 21

Регистрация: 13.07.2014

Сообщений: 374

15.05.2016, 20:50

20

<? if( ! empty($contacts[‘phones’]) ): ?>
<div class=»v-author__contact_items»>
<div class=»v-author__contact_title»><?= _t(‘view’, ‘Тел.’) ?></div>
<div class=»v-author__contact_content j-c-phones»>
<? foreach($contacts[‘phones’] as $v) { ?><span class=»hide-tail»>XXX XXX <em onclick = «showSTR(this, ‘<?= $v ?>’)»>показать</em></span><? } ?>
</div>
<div class=»clearfix»></div>
</div>
<? endif; # phones ?>
……………………………

function showSTR(th, value) {
th.parentNode.firstChild.replaceData(0, value.length, value);
}



0



Чтобы скрыть телефонный номер, вам потребуется сделать несколько моментов на своем сайте. Для начала нужно добавить скрипт. Но, для его роботы нужна библиотека jQuery. Если она подключена на сайте, то все отлично, если нет, то нужно ознакомится с статьей. Сама библиотека:

После библиотеки подключаем сам скрипт, который имеет следующий вид:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<script>

jQuery(document).ready(function($){

$.fn.textToggle = function(cls, str) {

return this.each(function(i) {

$(this).click(function() {

var c = 0, el = $(cls).eq(i), arr = [str,el.text()];

return function() {

el.text(arr[c++ % arr.length]);

}}());

})};

$(function(){

$('.sh_nmr').textToggle(".sh_nmr","").click();

$('.sh_nmr').textToggle(".num_hide","ХХХХХХХ").click();

});

});

</script>

В этом скрипте, вам нужно в будущем только две предпоследние строки:

1

2

$('.sh_nmr').textToggle(".sh_nmr","").click();

$('.sh_nmr').textToggle(".num_hide","ХХХХХХХ").click();

Первая строка отвечает за скрытие слова ПОКАЗАТЬ после нажатия. Вторая за замену части номера, ну или всего, если вы немного переделаете.

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

1

+1234<span class="num_hide">567890</span> <span class="sh_nmr">показать</span>

Часть или весь номер, нужно заключить в тег span с классом — num_hide. После номера добавить кнопку показать, заключенную в тег span с классом — sh_nmr.

По желанию, можете добавить стилей в соответствии с нуждами сайта и тд. Если все правильно сделано, то все должно работать правильно и безотказно.

В Яндекс.Метрике стало доступно отслеживание звонков с десктопной версии сайта в рамках цели «Клик по номеру телефона». Рекламодатели могут скрыть часть телефонного номера компании на сайте. Чтобы его открыть, пользователю нужно будет навести на него курсор. Тогда действие запишется в отчет как целевое, говорится в блоге Яндекс.Метрики.

Ранее цель «Клик по номеру телефона» позволяла отслеживать звонки только с мобильной версии сайта.

Чтобы включить скрытие части номера телефона на сайте, рекламодателю нужно создать новую цель «Клик по номеру телефона» или отредактировать существующую, установив чекбокс в соответствующем поле. Система позволяет выбрать, для каких номеров на сайте использовать частичное отображение — для всех или для избранных.

Настройка цели

До запуска цели рекламодатели могут открыть режим предпросмотра и узнать, для каких номеров функция будет работать, а для каких понадобится внести изменения в верстку сайта. Для этого нужно кликнуть на кнопку «Как это будет выглядеть на вашем сайте».

Режим предпросмотра

Отключить скрытие части номера можно в любой момент.

Как использовать данные из отчета по цели «Клик по номеру телефона»:

  • изучите статистику о посетителях сайта, которые собирались связаться с вами по телефону;

  • оцените эффективность рекламных каналов, которые привели заинтересованных пользователей;

  • покажите рекламу аудитории, которая похожа на звонивших вам пользователей.

Подробнее об отслеживании кликов пользователей на номер телефона — в справке Яндекса.

Напомним, что недавно Яндекс интегрировал Яндекс.Маркет с Метрикой, чтобы продавцы маркетплейса могли отслеживать статистику о заказах и покупателях.

Подпишитесь, чтобы получать полезные материалы о платном трафике

  • Адаптировал: irbees2008
  • Уровень сложности исполнения: это делается простым копированием и нажиманием кнопки
  • Демо:

Всем привет, сегодня на форуме был задан интересный вопрос.Как скрыть часть номера телефона, а при нажатии ссылки «показать «показывался . Ну вопрос не из сложных, решений множество как на js так и на php.
Ну я объясню вариант попроще.
Самый простой вариант это js
Итак приступим
1. Добавим стиль в файл стилей

Код:

  .hide-tail{
display: none;
}

Этот стиль будет скрывать блок с номером телефона
2.Теперь подключаем скрипт который будет подменять наш блок и показывать номер.

Код:

<script>
$.fn.textToggle = function(d, b, e) {
return this.each(function(f, a) {
a = $(a);
var c = $(d).eq(f),
g = [b, c.text()],
h = [a.text(), e];
c.text(b).show();
$(a).click(function(b) {
b.preventDefault();
c.text(g.reverse()[0]);
a.text(h.reverse()[0])
})
})
};
$(function(){
$('.click-tel').textToggle(".hide-tail","+7XXXXXXX","скрыть телефон")
});
</script>

Его подключать ниже подключения jquery
3.Сам код с номером телефона

Код:

<span class="hide-tail">+7 999 1112223</span> <a href="#" class="click-tel">показать телефон</a>

Как видите номер заключён в тег span с классом «hide-tail», т.е. блок является не видимым и скрипт выводит значение «+7XXXXXXX» , после клика по ссылке появляется блок с номером и ссылка меняется на «скрыть телефон».
Вот и все , проще не куда ,можно конечно сделать и на css3,но это потом.

Можешь почитать и вот эту статейку «Симпотичные часы на флеше»

Это тоже интересно

  •  Форматирование телефона,даты....

  •   Всплывающее окно при загрузке сайта с помощью CSS3 и  JS

  •  Статистика скачивания файлов от гугла

  •  Эффекты для диалоговых модальных окон вашего сайта

  •  Обалденный полно-экранный слайдер с параллакс эффектом

Старый

12.07.2018, 11:14

Аватар для LADYX

Профессор

Отправить личное сообщение для LADYX

Посмотреть профиль

Найти все сообщения от LADYX

 

Регистрация: 19.02.2015

Сообщений: 217

Как скрыть часть номера телефона?

Добрый день!
Подскажите, пожалуйста, как можно скрыть часть номера телефона (например, последние четыре цифры заменить на X), а при нажатии показать? Благодарю!

<span class="phone_number">+74953332211<span class="phone_number_active"> Показать</span></span>

Ответить с цитированием

Старый

12.07.2018, 11:38

Профессор

Отправить личное сообщение для Nexus

Посмотреть профиль

Найти все сообщения от Nexus

 

Регистрация: 04.12.2012

Сообщений: 3,589

<div class="phone_number">
	+7495333<span data-value="2211">xxxx</span>
	<span class="phone_number_active">Показать</span>
</div>
<div class="phone_number">
	+7495333<span data-value="2211">xxxx</span>
	<span class="phone_number_active">Показать</span>
</div>
<script>
[].forEach.call(document.querySelectorAll('.phone_number'),function(node){
	node.querySelector('.phone_number_active').addEventListener('click',function(){
		const nums=node.querySelector('[data-value]');
		nums.textContent=nums.dataset.value;
		
		this.style.display='none';
	});
});
</script>

Ответить с цитированием

Старый

12.07.2018, 11:53

<span class="phone_number">+7495333<span class="mask">2211</span><span class="phone_number_active"> Спрятать</span></span>
<script>
var masked = document.querySelector(".mask").innerText;
function closePhone() {
      document.querySelector(".mask").innerText = "XXXX";
      document.querySelector(".phone_number_active").innerText = " Показать";
};
function openPhone() {
      document.querySelector(".mask").innerText = masked;
      document.querySelector(".phone_number_active").innerText = " Спрятать";
};
document.querySelector(".phone_number_active").onclick = function() {
    if(this.innerText == " Спрятать") closePhone();
    else openPhone();

}

</script>

Ответить с цитированием

Старый

12.07.2018, 12:10

Аватар для LADYX

Профессор

Отправить личное сообщение для LADYX

Посмотреть профиль

Найти все сообщения от LADYX

 

Регистрация: 19.02.2015

Сообщений: 217

Nexus,
Dilettante_Pro,
приветствую вас!
Нет, немного не то, нужно не меняя html

<span class="phone_number">+74951182647<span class="phone_number_active"> Показать</span></span>

Ответить с цитированием

Старый

12.07.2018, 12:19

Профессор

Отправить личное сообщение для Nexus

Посмотреть профиль

Найти все сообщения от Nexus

 

Регистрация: 04.12.2012

Сообщений: 3,589

Ответить с цитированием

Старый

12.07.2018, 12:25

Аватар для рони

Профессор

Отправить личное сообщение для рони

Посмотреть профиль

Найти все сообщения от рони

 

Регистрация: 27.05.2010

Сообщений: 32,670

LADYX,

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
.phone_number_active:before {
  content: "XXXX"
}
.phone_number_active:active:before {
  content: attr(text)
}

 </style>

</head>

<body>
<span class="phone_number">+7495333<span class="phone_number_active" text="2211"> Показать</span></span>
</body>
</html>

Ответить с цитированием

Старый

12.07.2018, 12:30

Профессор

Отправить личное сообщение для Nexus

Посмотреть профиль

Найти все сообщения от Nexus

 

Регистрация: 04.12.2012

Сообщений: 3,589

На счет кроссбраузерности не уверен.

<span class="phone_number">+74951182647<span class="phone_number_active"> Показать</span></span>

<span class="phone_number">+74951182647<span class="phone_number_active"> Показать</span></span>
<script>
[].forEach.call(document.querySelectorAll('.phone_number'),function(node){
	const item=node.firstChild;
	item.__hiddenPart=item.textContent.substr(-4);
	item.textContent=item.textContent.replace(item.__hiddenPart,'xxxx');
	
	node.querySelector('.phone_number_active').addEventListener('click',function(){
		item.textContent=item.textContent.replace('xxxx',item.__hiddenPart);
		
		this.style.display='none';
	});
});
</script>

Ответить с цитированием

Старый

12.07.2018, 12:33

Аватар для рони

Профессор

Отправить личное сообщение для рони

Посмотреть профиль

Найти все сообщения от рони

 

Регистрация: 27.05.2010

Сообщений: 32,670

LADYX,

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
.phone_number_active{
    position: relative;
    margin-left:40px;
}
.phone_number_active:before {
   position: absolute;
  content: "XXXX";
  left: -80px;
  background-color: #FFFFFF;
  margin-right:30px;
}
.phone_number_active:active:before {
  content: ""
}

 </style>

</head>

<body>
<span class="phone_number">+74953332211<span class="phone_number_active"> Показать</span></span>
</body>
</html>

Ответить с цитированием

Старый

12.07.2018, 12:48

Аватар для LADYX

Профессор

Отправить личное сообщение для LADYX

Посмотреть профиль

Найти все сообщения от LADYX

 

Регистрация: 19.02.2015

Сообщений: 217

Nexus,
да, этот вариант то что нужно, все работает, спасибо!
рони,
и вам спасибо!

Ответить с цитированием

Старый

12.07.2018, 13:00

Аватар для LADYX

Профессор

Отправить личное сообщение для LADYX

Посмотреть профиль

Найти все сообщения от LADYX

 

Регистрация: 19.02.2015

Сообщений: 217

Nexus,
я прошу прощения, пытаюсь присвоить отдельный класс

item.textContent=item.textContent.replace(item.__hiddenPart,'<span class='phone_number_xxxx'>xxxx</span>');

но скрипт перестает работать. Что я делаю не правильно?

Ответить с цитированием

Like this post? Please share to your friends:
  • Как скрыть свой номер телефона при отправке смс другому абоненту
  • Как скрыть свой номер телефона при звонке ростелеком
  • Как скрыть свой номер телефона при звонке на телефоне самсунг
  • Как скрыть свой номер телефона при звонке на айфоне мтс
  • Как скрыть свой номер телефона при звонке мтс бесплатно один раз