【问题标题】:Using qtip should disappear when lost focus失去焦点时使用 qtip 应该会消失
【发布时间】:2016-12-22 09:49:59
【问题描述】:

我正在写网站,并使用qtip:

我希望在关注字段(一个 html 元素)时,我会在每个焦点上看到一个工具提示,而当失去焦点时 - 工具提示应该消失。

有两种html元素。 输入(当有焦点时)。 收音机(当没有焦点时,只需将鼠标悬停应显示工具提示)。

这是我的代码(javascript 方面,我有问题,因为工具提示有时不会消失 - 为什么?)

function showtooltip(item, val, acorner, ahide) {
    'use strict';
    var tipCorner;
    if (ahide === undefined) {
        ahide = 'blur';
    }

    if (acorner === undefined) {
        acorner = 'bottomLeft';
    }

    if (acorner === "topRight") {
        tipCorner = "leftMiddle";
    } else {
        tipCorner = "topLeft";
    }

    setTimeout(function() {
        $(item).qtip({
            content: {
                text: val
            },
            show: {
                ready: true
            },
            hide: {
                when: ahide,
                delay: 0
            },
            style: {
                //classes: 'ui-tooltip-jtools',
                background: '#A2D959',
                width: 400,
                color: 'black',
                border: {
                    width: 1,
                    radius: 3,
                    color: '#6699CC'
                },
                tip: { // Now an object instead of a string
                    corner: tipCorner, // We declare our corner within the object using the corner sub-option
                    color: '#6699CC',
                    size: {
                        x: 20, // Be careful that the x and y values refer to coordinates on screen, not height or width.
                        y : 8 // Depending on which corner your tooltip is at, x and y could mean either height or width!
                    }
                }
            },
            position: {
                corner: {
                    target: acorner
                }
            },
            api: {
                onHide: function() {
                    $(item).qtip('api').destroy();
                },
                onShow: function() {
                    setTimeout(function() { $(item).qtip('hide'); }, 2000);
                }
            }
        });
    }, 0);
}

function showtooltiph(item, val) {
    'use strict';
    showtooltip(item, val, 'bottomLeft', 'mouseout unfocus');
}

在 html 方面: ...

tooltip 有时不隐藏,我看到几个 tooltip,这是很烦人的行为 - 可能是什么原因?

谢谢:)

【问题讨论】:

    标签: javascript jquery qtip


    【解决方案1】:

    Qtip隐藏和显示选项可用,可以作为选项提及。

    HTML:

    <fieldset>
        <legend>Validating a complete form</legend>
        <p>
            <label for="firstname">Firstname</label>
            <input type="text" class="show-tip" message="This is Firstname Field" name="firstname" id="firstname">
        </p>
        <p>
            <label for="password">Password</label>
            <input type="password" name="password" id="password">
        </p>
        <p>
            <label for="email">Email</label>
            <input type="email" name="email" id="email">
        </p>
        <p>
            <label for="agree">Please agree to our policy</label>
            <input type="checkbox" name="agree" id="agree" class="checkbox">
        </p>
        <p>
            <label for="newsletter">I'd like to receive the newsletter</label>
            <input type="radio" name="gender" id="male" class="radio">
        </p>
        <p>
            <input type="submit" value="Submit" class="submit">
        </p>
    </fieldset>
    

    代码:

    $(document).ready(function () {
      var tipOptions =    {
          content: 'Some basic content for the tooltip',
          show: 'focus',
          hide: { 
            when: {
              event: 'unfocus'
            }
          }
       };
      $('input[type=text]').qtip(tipOptions);
      $('input[type=password]').qtip(tipOptions);
      $('input[type=email]').qtip(tipOptions);
      $('input[type=checkbox]').qtip(tipOptions);
      $('input[type=radio]').qtip(tipOptions);
    
      $('input[type=checkbox]').mouseover(function(){
          $('input[type=checkbox]').qtip('show');
      });
      $('input[type=checkbox]').mouseout(function(){
          $('input[type=checkbox]').qtip('hide');
      });
    
      $('input[type=radio]').mouseover(function(){
          $('input[type=radio]').qtip('show');
      });
      $('input[type=radio]').mouseout(function(){
          $('input[type=radio]').qtip('hide');
      });
    });
    

    Demo分享于JS Fiddle Reference

    更新 - 2016 年 12 月 23 日

    qTip2 在单行中的工作示例。

     var tipOptions = {
          content: 'Some basic content for the tooltip',
          show: 'focus',
          hide: { 
            when: {
              event: 'unfocus'
            }
          }
       };
    
      $('input').qtip(tipOptions);
      
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.css" />
    
    <fieldset>
      <legend>Validating a complete form</legend>
      <p>
        <label for="firstname">Firstname</label>
        <input type="text" class="show-tip" message="This is Firstname Field" name="firstname" id="firstname">
      </p>
      <p>
        <label for="password">Password</label>
        <input type="password" name="password" id="password">
      </p>
      <p>
        <label for="email">Email</label>
        <input type="email" name="email" id="email">
      </p>
      <p>
        <label for="agree">Please agree to our policy</label>
        <input type="checkbox" name="agree" id="agree" class="checkbox">
      </p>
      <p>
        <label for="newsletter">I'd like to receive the newsletter</label>
        <input type="radio" name="gender" id="male" class="radio">
      </p>
      <p>
        <input type="submit" value="Submit" class="submit">
      </p>
    </fieldset>

    【讨论】:

    • 我在body标签上添加了:onselectstart='return false' 现在所有的qtip都显示和隐藏了。是巧合还是我采取的上述措施解决了问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    相关资源
    最近更新 更多