Как отобразить всплывающую подсказку ui-boostrap на отключенной кнопке?

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

Вот код моей кнопки:

<button class="btn btn-default"
        uib-tooltip="My tooltip text"
        tooltip-append-to-body="true"
        ng-disabled="!isAllSelected"
        ng-click="doThat()">Click Here
</button>

Знаете ли вы, как сделать всплывающую подсказку отображаемой, даже если кнопка отключена?


person smartmouse    schedule 02.03.2016    source источник
comment
Я не думаю, что это будет работать, так как если кнопка отключена, событие не будет запущено. Лучше отключить кнопку с помощью CSS, добавив класс.   -  person Ved    schedule 02.03.2016
comment
вы должны обернуть кнопку в элемент. после этого вы можете активировать всплывающую подсказку для элемента.   -  person Hans    schedule 20.04.2016


Ответы (5)


Подобно решению janosch - оберните вашу кнопку в div с атрибутом всплывающей подсказки.

<div uib-tooltip="{{ isDisabled ? 'Button is disabled' : '' }}">
   <button disabled="isDisabled">Button</button>
</div>

Подсказка будет видна только тогда, когда переменная isDisabled имеет значение true, что также устанавливает статус disabled кнопки.

Это решение также будет работать, если вы используете атрибут title вместо uib-tooltip.

person BooklynDadCore    schedule 21.01.2020
comment
Обязательно отключите события указателя, как показано в этом ответе. В противном случае всплывающая подсказка не будет работать должным образом: stackoverflow.com/a/40147917/2698694 - person Connor M; 09.07.2020

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

<a class="btn btn-default"
   uib-tooltip="My tooltip text"
   tooltip-append-to-body="true"
   ng-disabled="!isAllSelected"
   ng-click="doThat()">Click Here
</a>
person prograde    schedule 08.06.2016
comment
Недостатком этого является то, что элемент без ввода или без кнопки, такой как тег ‹a›, не заботится об отключенном атрибуте и по-прежнему будет кликабельным. - person Shahar; 08.06.2017

Я знаю, что этому вопросу уже несколько лет, однако кто-то может найти полезным этот обходной путь.

Что я сделал, так это обернул содержимое кнопки тегом <span> и применил к нему всплывающую подсказку uib:

<button type="button" class="btn btn-primary" ng-click="foo()" ng-disabled="true">
    <span uib-tooltip="Tooltip text" tooltip-append-to-body="true"> Button text<span>
</button>

Если вам также нужно, чтобы всплывающая подсказка отображалась, когда пользователь наводит курсор на всю область кнопки, вы также можете удалить отступ кнопки и вместо этого добавить его в <span>.

<button type="button" class="btn btn-primary" ng-click="foo()" ng-disabled="true" style="padding: 0px !important;">
    <span uib-tooltip="Tooltip text" tooltip-append-to-body="true" style="display:inline-block; padding: 5px 10px;"> Button text<span>
</button> 
person janosch    schedule 15.07.2019

Самое простое, наименее навязчивое решение:

<a class="btn btn-default"
    uib-tooltip="My tooltip text"
    tooltip-append-to-body="true"
    ng-disabled="!isAllSelected"
    ng-click="isAllSelected ? doThat() : null">Click Here
</a>

(обратите внимание на условное ng-click, без которого клики все равно будут проходить, даже если якорь «отключен» - т.е. якоря не поддерживают отключенный атрибут)

person d3vtoolsmith    schedule 23.06.2016
comment
Таким образом, вы вводите некоторую логику в представление, и это неправильный подход для приложений MVC. - person smartmouse; 27.06.2016
comment
просто иллюстрируя необходимость условия - тривиально разместить внутри doThat - person d3vtoolsmith; 14.07.2016

Независимо от того, включена или отключена кнопка, я получаю подсказку uib. Код ниже работает нормально для меня.

<button type="button" class="btn btn-sm btn-default" ng-click="toggleMin()" ng-disabled = "true" uib-tooltip="After today restriction" >Min date</button>

См. этот планкер.

Добавлен скриншот всплывающей подсказки введите здесь описание изображения

Дополнительные примечания. Вы также можете настроить положение всплывающей подсказки. Все, что вам нужно сделать, это воспользоваться помощью $uibTooltipProvider. Затем мы можем использовать раздел конфигурации для достижения результата. Код ниже включен в plunker.

angular.module('ui.bootstrap.demo')
.config(['$uibTooltipProvider', function ($uibTooltipProvider) {
    $uibTooltipProvider.options({
        'placement':'bottom'
    });
}])
person Naga Sandeep    schedule 02.03.2016
comment
Эм... я попробовал ваш код, но на отключенной кнопке не отображается всплывающая подсказка. - person smartmouse; 02.03.2016
comment
Какую версию angular.js, boostrap.css и angularanimate.js вы используете? Какой браузер? - person Naga Sandeep; 02.03.2016
comment
Я пытаюсь на вашем примере с плункером. Нет всплывающей подсказки на отключенной кнопке. - person smartmouse; 02.03.2016
comment
добавлен скриншот для справки - person Naga Sandeep; 02.03.2016
comment
Здесь ничего: он отображает отключенный значок на кнопке, я пробовал с Firefox и Chrome. - person smartmouse; 02.03.2016
comment
То же самое происходит на компьютере моего друга: не отображается всплывающая подсказка. - person smartmouse; 02.03.2016
comment
Я использую FF 44.02, и он работает. У меня в хроме тоже не работает. Я не уверен, почему. Может у него какие-то проблемы - person Naga Sandeep; 02.03.2016
comment
Я использую FF 38, а у моего друга FF 44.0.2. Это очень странно :( - person smartmouse; 02.03.2016