Tooltip on click of a button

后端 未结 7 950
执笔经年
执笔经年 2021-01-01 20:31

I\'m using clipboard.js to copy some text from a textarea, and that\'s working fine, but I want to show a tooltip saying \"Copied!\" if it was successfully copi

相关标签:
7条回答
  • 2021-01-01 20:56

    I do it like it

    HTML :

    <button class="test" data-clipboard-text="1">Button 1</button>
    <button class="test" data-clipboard-text="1">Button 2</button>
    

    JS :

    $('.test').tooltip({
      trigger: 'click',
      placement: 'bottom'
    });
    
    function setTooltip(btn, message) {
      btn.tooltip('hide')
        .attr('data-original-title', message)
        .tooltip('show');
    }
    
    function hideTooltip(btn) {
      setTimeout(function() {
        btn.tooltip('hide');
      }, 1000);
    }
    
    var clipboard = new Clipboard('.test');
    
    clipboard.on('success', function(e) {
        var btn = $(e.trigger);
      setTooltip(btn, 'Copied');
      hideTooltip(btn);
    });
    

    With jsfiddle link https://jsfiddle.net/hs48sego/1/

    0 讨论(0)
  • 2021-01-01 21:04

    This solution work, if you have some buttons and etc:

    function setTooltip(e,message) {
      $(e.trigger).tooltip({
      trigger: 'click',
      placement: 'bottom'
    });
    $(e.trigger).tooltip('hide')
     .attr('data-original-title', message)
     .tooltip('show');
    }
    
    function hideTooltip(e) {
      setTimeout(function() {
        $(e.trigger).tooltip('hide');
      }, 1000);
    }
    
    // Clipboard
    
    var clipboard = new Clipboard('button');
    
    clipboard.on('success', function(e) {
      setTooltip(e,'Copied!');
      hideTooltip(e);
    });
    
    clipboard.on('error', function(e) {
      setTooltip(e,'Failed!');
      hideTooltip(e);
    });
    
    0 讨论(0)
  • 2021-01-01 21:05

    I am using Menucool JavaScript Tooltip. It leaves to the triggering element to decide how to launch the tooltip:

    <span onclick="tooltip.pop(this, 'Hello world!')">
        Click me
    </span>
    
    0 讨论(0)
  • 2021-01-01 21:08

    CSS Only Solution

    Githubs Primer tooltips is an excellent solution.

    Usage:

    npm install --save primer-tooltips
    

    Copy the node_modules/primer-tooltips/build/build.css file to a convenient location and then link to it in your HTML. (Consider renaming it a more convenient name e.g. primer-tooltips.css). You'll have to edit the build.css file by commenting out the .tooltipped:hover::before,.tooltipped:hover::after, pseudo selectors to achieve the on click effect.

    Assuming you have clipboardJS already set up, add the following attributes to your copy button:

    <button 
        class="tooltipped tooltipped-s tooltipped-align-left-1 border p-2 mb-2 mr-2 float-left" 
        aria-label="copied!">
    copy
    </button>
    

    That's it!

    0 讨论(0)
  • 2021-01-01 21:16

    Here's a js fiddle that implements this the way the website does it, I stole the source code: https://jsfiddle.net/bmbs7yco/

    the main components to the solution are:

    function showTooltip(elem, msg) {
        elem.setAttribute('class', 'btn tooltipped tooltipped-s');
        elem.setAttribute('aria-label', msg);
    }
    
    clipboard.on('success', function(e) {
      console.info('Action:', e.action);
      console.info('Text:', e.text);
      console.info('Trigger:', e.trigger);
        showTooltip(e.trigger, 'Copied!');
      e.clearSelection();
    });
    

    and adding their primer.css. A less lazy method would be to extract the classes from the css you need.

    0 讨论(0)
  • 2021-01-01 21:19

    Clipboard.js creator here. So Clipboard.js is not opinionated about user feedback which means it doesn't come with a tooltip solution.

    But here's an example of how you can integrate it with Bootstrap's Tooltip.

    // Tooltip
    
    $('button').tooltip({
      trigger: 'click',
      placement: 'bottom'
    });
    
    function setTooltip(message) {
      $('button').tooltip('hide')
        .attr('data-original-title', message)
        .tooltip('show');
    }
    
    function hideTooltip() {
      setTimeout(function() {
        $('button').tooltip('hide');
      }, 1000);
    }
    
    // Clipboard
    
    var clipboard = new Clipboard('button');
    
    clipboard.on('success', function(e) {
      setTooltip('Copied!');
      hideTooltip();
    });
    
    clipboard.on('error', function(e) {
      setTooltip('Failed!');
      hideTooltip();
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.10/clipboard.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
    <link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
    
    <button class="btn btn-primary" data-clipboard-text="1">Click me</button>

    0 讨论(0)
提交回复
热议问题