2013-10-06 40 views
0

如果文本比當前輸入寬度寬,我想顯示輸入類型文本的內容。懸停時暫時設置輸入類型文字的動畫

當我將鼠標懸停在該字段上時,我希望文字滾動到左側或類似的位置,以便查看隱藏文字。

謝謝。

請注意:請告訴我是否必須添加/更改問題的標籤。

+3

問題很好,清楚地表明,但你有沒有嘗試過自己?很高興看到一些研究或代碼的努力。 –

回答

1

我想過我會如何做到這一點,這就是我想出的。

在輸入懸停我要採取輸入值,並把它放在一個div(或任何其他元素)。然後獲取該div的寬度並將其與輸入的寬度進行比較。如果div比輸入寬,那麼我將根據寬度的差異爲輸入文本縮進設置動畫效果。

$('input').hover(function(){ 
    var temp = $('div').html($(this).val()).width(); 
    if($(this).width() < temp){ 
     $(this).animate({ 
      textIndent: $(this).width()-temp 
     }, 100); 
    } 
}); 

你可以看到完整的解決方案在這裏:http://jsfiddle.net/taneleero/tB5C5/2/

應該足以讓你去。

+0

我會稍微測試一下,謝謝。 –

+1

因爲瀏覽器處理輸入的方式非常不同,所以其他解決方案在Firefox中不起作用。 我已經更新了我的小提琴,包括鼠標離開時的重置以及檢查輸入何時獲得焦點,以便停止動畫並重置。 http://jsfiddle.net/taneleero/tB5C5/1/ –

+0

它在你提供的鏈接中工作,但我使用其他的div元素,所以你可以改變它,所以它只會針對一個元素?如果這項工作,我會接受你的答覆作爲答案。謝謝。 –

1

呃,儘管我確實發表了這個評論。自己無法抵擋這一個。使用jQuery:

<input type="text" id="txt" value="A very long text goes here very long text goes here very long text goes here very long text goes here very long text goes here indeed."></input>

$('#txt').hover(

    function() { 
     $(this).animate({"scrollLeft": this.scrollWidth}, this.value.length*50) 
    }, 

    function() { 
     $(this).stop(); 
     this.scrollLeft = 0; 
    } 
) 

這裏的jQuery .animate()用於動態輸入字段內的文本.scrollLeft位置。動畫持續時間與文本長度有關,所以對於各種文本,速度應該是相同的。當鼠標離開輸入控制 - 滾動位置重置爲原始。

演示:http://jsfiddle.net/uPGmC/

如果你用Google搜索了一下的「輸入文本向左滾動」,你會發現像this答案,它使用jQuery文檔上hover組合和animate你會拼湊的解決方案自己。

+0

它適用於谷歌瀏覽器,但出於某種原因不適用於Firefox。 –

+1

Yup剛剛注意到,這隻適用於基於WebKit的瀏覽器(Chrome,Safari,Opera)。將不得不找出原因 –