Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.03.2021, 17:00
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 155

jquery и bootstrap 3 (tooltip)
Использую bootstrap 3 и jquery 3.5.1

При клике на span копируется его содержимое в буфер обмена.
Сейчас нужно добавить всплывающую подсказку Номер скопирован.

Добавил в span
data-toggle="tooltip" title="Номер скопирован" style="cursor: pointer;"

И скрипт
$('[data-toggle="tooltip"]').tooltip({
		trigger: 'manual'
	});

Тогда подсказки появляются и постоянно видны.
Тогда еще добавил
var id = $(this).attr('id');
...
$('[data-toggle="tooltip"]').tooltip('hide');
$("#" + id).tooltip('show');


Теперь если копировать номер один раз, то все нормально, при копировании старая подсказка исчезает, новая появляется.
Но если копировать номер повторно, то подсказка просто появляется и сразу исчезает.

Как это исправить или как сделать правильно?

Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 17.03.2021, 19:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

savsoft,
$('[data-toggle="tooltip"]').tooltip({
    trigger: 'click'
}).on('shown.bs.tooltip', function() {
    let span = this;
    window.clearTimeout(span.timer);
    span.timer = window.setTimeout(_ => $(span).tooltip('hide'), 1500)
});
Ответить с цитированием
  #3 (permalink)  
Старый 17.03.2021, 19:44
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 155

Сообщение от рони Посмотреть сообщение
savsoft,
$('[data-toggle="tooltip"]').tooltip({
    trigger: 'click'
}).on('shown.bs.tooltip', function() {
    let span = this;
    window.clearTimeout(span.timer);
    span.timer = window.setTimeout(_ => $(span).tooltip('hide'), 1500)
});
Попробовал, но срабатывает через раз на уже скопированном номере. То есть, если номер уже скопирован, то кликнуть нужно два раза.
Ответить с цитированием
  #4 (permalink)  
Старый 17.03.2021, 19:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

savsoft,
делайте макет, иначе непонятно что у вас не работает.
Ответить с цитированием
  #5 (permalink)  
Старый 17.03.2021, 19:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от savsoft
то кликнуть нужно два раза.
зачем нужно кликнуть?
Ответить с цитированием
  #6 (permalink)  
Старый 17.03.2021, 20:02
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 155

Сообщение от рони Посмотреть сообщение
savsoft,
$('[data-toggle="tooltip"]').tooltip({
    trigger: 'click'
}).on('shown.bs.tooltip', function() {
    let span = this;
    window.clearTimeout(span.timer);
    span.timer = window.setTimeout(_ => $(span).tooltip('hide'), 1500)
});
Сообщение от рони Посмотреть сообщение
зачем нужно кликнуть?
Чтобы появилась подсказка.

Последний раз редактировалось savsoft, 17.03.2021 в 20:19.
Ответить с цитированием
  #7 (permalink)  
Старый 17.03.2021, 20:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

копирование в буфер обмена с подсказкой
savsoft,
клик по цифрам, скопирует цифры и покажет подсказку на 1.5 секунды
<!doctype html>
<html lang="ru">
<head>
    <title>Bootstrap 4 Tooltips - Пример работы с методами</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- Bootstrap CSS -->
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css" rel="stylesheet">

</head>
<body>
 <span data-toggle="tooltip" title="Номер скопирован" style="cursor: pointer;">123</span>
 <span data-toggle="tooltip" title="Номер скопирован" style="cursor: pointer;">007</span>

<!-- jQuery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://itchief.ru/examples/vendors/popper.js/popper.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>

<script>
$('[data-toggle="tooltip"]').tooltip({
        trigger: 'click'
    }).on('shown.bs.tooltip', function () {
    let span = this;
    navigator.clipboard.writeText(span.textContent);
    window.clearTimeout(span.timer);
    span.timer = window.setTimeout(_ => $(span).tooltip('hide'), 1500)
});

</script>

</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 17.03.2021, 20:29
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 155

Вот сделал пример. Для уже скопированных номеров подсказка показывается через раз.

<!DOCTYPE html>
<html>
<head>
	<title>Клиенты</title>
    <meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
	<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>	
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>	
</head>
 
<body>

    <div class="container-fluid">
        <div class="row">
            <table class="table table-bordered">
                <thead>
                    <tr>
						<th style="text-align: center;">Телефон</th>
					</tr>
                </thead>
                <tbody>
                    <tr>
						<td><span id="phone1" data-toggle="tooltip" title="Номер скопирован" style="cursor: pointer;">111111111111</span></td>
					</tr>
                    <tr>
						<td><span id="phone1" data-toggle="tooltip" title="Номер скопирован" style="cursor: pointer;">222222222222</span></td>
					</tr>
                    <tr>
						<td><span id="phone1" data-toggle="tooltip" title="Номер скопирован" style="cursor: pointer;">333333333333</span></td>
					</tr>
                    <tr>
						<td><span id="phone1" data-toggle="tooltip" title="Номер скопирован" style="cursor: pointer;">444444444444</span></td>
					</tr>
                    <tr>
						<td><span id="phone1" data-toggle="tooltip" title="Номер скопирован" style="cursor: pointer;">555555555555</span></td>
					</tr>
		</div>
	</div>	

<script>
	$('[data-toggle="tooltip"]').tooltip({
	        trigger: 'click'
	    }).on('shown.bs.tooltip', function () {
	    let span = this;
	    navigator.clipboard.writeText(span.textContent);
	    window.clearTimeout(span.timer);
	    span.timer = window.setTimeout(_ => $(span).tooltip('hide'), 1500)
	});
</script>  
</body>
</html>

Последний раз редактировалось savsoft, 17.03.2021 в 20:32.
Ответить с цитированием
  #9 (permalink)  
Старый 17.03.2021, 20:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

savsoft,
попробуйте так
<!DOCTYPE html>
<html>
<head>
    <title>Клиенты</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</head>
<body>
    <div class="container-fluid">
        <div class="row">
            <table class="table table-bordered">
                <thead>
                    <tr>
                        <th style="text-align: center;">Телефон</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td><span  class="spantocopy" data-toggle="tooltip"  style="cursor: pointer;">111111111111</span></td>
                    </tr>
                    <tr>
                        <td><span  class="spantocopy" data-toggle="tooltip"  style="cursor: pointer;">222222222222</span></td>
                    </tr>
                    <tr>
                        <td><span  class="spantocopy" data-toggle="tooltip"  style="cursor: pointer;">333333333333</span></td>
                    </tr>
                    <tr>
                        <td><span  class="spantocopy" data-toggle="tooltip"  style="cursor: pointer;">444444444444</span></td>
                    </tr>
                    <tr>
                        <td><span  class="spantocopy" data-toggle="tooltip"  style="cursor: pointer;">555555555555</span></td>
                    </tr>
        </div>
    </div>
<script>
jQuery('[data-toggle="tooltip"]').tooltip({
    trigger: 'manual',
    title: function() {
        return `Номер ${this.textContent} скопирован`
    }
}).on('click', function() {
    let span = this;
    navigator.clipboard.writeText(span.textContent);
    jQuery(span).tooltip('show')
    window.clearTimeout(span.timer);
    span.timer = window.setTimeout(_ => jQuery(span).tooltip('hide'), 1500)
})
</script>
</body>
</html>

Последний раз редактировалось рони, 17.03.2021 в 20:55.
Ответить с цитированием
  #10 (permalink)  
Старый 17.03.2021, 21:27
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 155

Так как копировать разные номера нужно (Номер заказа/Номер накладной/Номер телефона), то title оставил в span, а скрипт сделал такой

<script>
	$('[data-toggle="tooltip"]').tooltip({
		trigger: 'manual'
	}).on('click', function() {
		let span = this;
		navigator.clipboard.writeText(span.textContent);
		$(span).tooltip('show')
		window.clearTimeout(span.timer);
		span.timer = window.setTimeout(_ => $(span).tooltip('hide'), 1000)
	})
</script>


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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просмотрела исходик jQuery Откорректируйте где не верно taksebe jQuery 5 23.11.2018 22:42
помощь по bootstrap компонент tooltip Artur_Hopf Общие вопросы Javascript 2 18.10.2018 11:26
Адаптивная верстка bootstrap, html5, css3 & jQuery WebPak Работа 0 30.07.2016 01:16
как сделать tooltip без jQuery CrossFire Элементы интерфейса 2 18.11.2013 02:29
Ищется frontend программист\верстальщик Twitter bootstrap + jQuery remote_jquery Работа 0 18.06.2013 12:17