2015-04-02 46 views
0

我無法使用jQuery更改工具提示引導位置。 例如http://jsfiddle.net/2cast8g8/
如果我在text1中輸入一個更大的值,我的函數ck()需要改變工具提示的位置。我無法使用jQuery更改工具提示引導位置


此外,它可以改變紅色與jQuery的工具提示的顏色?

<input type="text" id="text1" name="title" value="" data-toggle="tooltip" data-placement="top"title="this need to be less"> 
<input type="text" id="text2" name="title" value="" data-toggle="tooltip" data-placement="bottom"title="bigger "> 

$('#text1').change(function() { 
    ck() 
}); 
$('#text2').change(function() { 
    ck() 
}); 

function ck() { 
    text1 = document.getElementById("text1").value; 
    text2 = document.getElementById("text2").value; 
    if (Number(text1) > Number(text2)) { 
     $("#text2").attr("data-original-title", "This value need to be bigger than "); 
     $("#text1").attr("data-placement", "top"); 
     $(function() { 
      $('#text2').tooltip('hide').tooltip('show'); 
     }); 
    } else { 
     $("#text2").attr("data-original-title", "bigger"); 
    } 
} 
$(function() { 
    $('[data-toggle="tooltip"]').tooltip('show') 
}) 

回答

0
$('body').tooltip({ 
    placement: function(tip, element) { 
     //code to calculate the position here, return values: "left", "right", "top", "bottom" 
    }, 
    selector: '[data-toggle="tooltip"]' 
}); 
+0

我不知道如何使用代碼。 – user3944364 2015-04-02 21:36:25

+0

如果我正確地理解了這個問題,他想修改/定製工具提示的確切位置(向左或向右移動它)。上述功能只能返回其中一個內置位置。 – 2015-04-02 21:39:08

0

引導程序工具提示插件有一個「放置」選項,其控制一般位置(頂部,底部,左,右)的工具提示的,但它算出準確的在這個函數中的位置:

Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { 
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width/2 - actualWidth/2 } : 
     placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width/2 - actualWidth/2 } : 
     placement == 'left' ? { top: pos.top + pos.height/2 - actualHeight/2, left: pos.left - actualWidth } : 
    /* placement == 'right' */ { top: pos.top + pos.height/2 - actualHeight/2, left: pos.left + pos.width } 
} 

你可以重載這個函數來提供你自己的邏輯(也許通過添加一個'自定義'展示位置類型。請注意,插件除了設置css位置屬性外,還將位置類型作爲類應用於元素。這些類在setContent函數中被刪除,因此您必須調整該函數以刪除新的自定義佈局類型類。您可能還需要考慮其他問題/考慮事項 - 這不是一個簡單的選擇。但這將是一個有趣的項目,甚至可能值得拉請求:)

另一種方法是在引導插件完成後簡單地移動/覆蓋位置。有一個「顯示」事件可用,但它只在應用了css轉換後觸發,因此可能不適合。

一個例子可能是這樣的(未測試的代碼):

$('#text2').on('shown.bs.tooltip', function() { 
    var left = $(this).css('left'); 
    $(this).css({ 
    left: left + 50 
    }); 
}) 

你可能想看看jQueryUI的工具提示部件 - 它具有用於定位的工具提示更多的功能(包括添加自定義的偏移量)。 http://api.jqueryui.com/tooltip/#option-position

+0

.tooltip.top .tooltip-inner {background-color:#f00;}我想使用這個CSS。 $(「#text1」)。attr(「data-placement」,「top」);如果數據文本框不正確,我將工具提示從底部切換到頂部,以使工具提示變爲紅色。 – user3944364 2015-04-02 22:49:11

+0

我不確定這裏的問題到底是什麼。您應該能夠將顏色更改邏輯放入顯示的事件中。 – 2015-04-03 16:49:27

+1

我想更改位置,因爲如果用戶出錯,我無法將顏色更改爲紅色。所以我添加到CSS:.tooltip.top .tooltip-inner {background-color:#f00;}如果沒有錯誤,我保留的用戶數據保持在工具提示底部。什麼時候出錯我想使用內置位置頂部,因爲在我的CSS是紅色的。我不能用jQuery改變紅色的工具提示顏色。 – user3944364 2015-04-03 22:16:08