2010-03-21 10 views
2

我有一個jPicker安裝並運行正常;它是一個非常漂亮的腳本。jQuery jPicker colorpicker:如何將8位(w透明度)轉換爲標準6位十六進制?

但是,它返回到我的輸入框的值是8位十六進制。我需要它返回6位十六進制。

而不是後處理8位數字爲6,我寧願只是入侵腳本,並強制6位數字。或者,我可以掛鉤jPicker的change事件來攔截它發送給input元素的值,並在它用hex去更新輸入之前進行轉換。

這裏是我的代碼:

$(function() { 
    $('#myThemeColor').jPicker(); /* Bind jPicker to myThemeColor input */ 
    $("#carousel").jCarouselLite({ 
     btnNext: ".next", 
     btnPrev: ".prev", 
     visible: 6, 
     speed: 700 
    }); 

這裏就是我與攔截myThemeColor輸入的更改事件使用的代碼,但它不是射擊的。

$('#myThemeColor').change(function() 
    { 
alert(this.val()); /* does not fire on any action */) 
    if($(this).val().length == 8) 
     { 

     $(this).val(function(i, v) 
      { 
       return v.substring(0, 6); 
      }); 
     } 
    }); 

回答

0

使用這樣的回調將做到這一點,如果您使用的是輸入:

$('#myThemeColor').jPicker({}, 
    function(color) { $(this).val(color.get_Hex()); }, 
    function(color) { $(this).val(color.get_Hex()); }); 
); 

這會搶的十六進制值和設定值,當你點擊OK和生活,你改變它在選取器。如果你不想讓它活着,請取消第二個功能。

+0

這是訣竅。謝謝尼克! – 2010-03-21 15:19:59

+0

@Scott - 歡迎:) Woops,我會解決這個錯誤,以防萬一以後讓別人感到困惑。 – 2010-03-21 15:21:04

+0

錯字是什麼?我錯過了。 – 2010-03-21 16:48:42

0

這不會發生「變更」事件。您需要將您的回調作爲第二個參數傳遞給jPicker初始化。

$('#myThemeColor').jPicker({}, function() { 
    alert("changed!"); 
    // whatever 
}); 

如果你想跟蹤「實時」更新,你可以傳入另一個函數(換句話說,第三個參數)。

這似乎是一個非常愚蠢的,而不是非常jquery般的做事方式,我會認爲。

相關問題