javascript - 失去焦点时使用 qtip 应该会消失

标签 javascript jquery qtip

我正在编写网站,并使用 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 方面: ...

工具提示有时不会隐藏,并且我看到几个工具提示,这是非常烦人的行为 - 可能是什么原因?

谢谢:)

最佳答案

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');
  });
});

演示分享于JS Fiddle Reference

Updated - 23rd Dec 2016

在单行中使用 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>

关于javascript - 失去焦点时使用 qtip 应该会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16874703/

相关文章:

javascript - 如何修复 Lerna Monorepo 中的 VSCode 导入路径建议?

javascript - 获取一个非常大的字符串中所有出现的子字符串

javascript - 使用 api.rpc.payment.queryFeeDetails 获取外部费用

javascript - Highchart - 以编程方式更改 y 轴的标签文本

javascript - 第一个和最后一个引号之间的匹配字符串

javascript - 如何在包含 Bootstrap 的情况下将文本输入的宽度设置为 0px?

php - 获取 WooCommerce 中事件选定产品变体的数量

jquery - Qtip基础问题

jquery - IE 和 Jquery qTip 插件的问题

javascript - Pace.JS Qtip 如何忽略 Pace Animation