2017-03-09 177 views
1

我是Jquery的新手,請原諒我的無知。我有一個頁面,可以在頁面加載時設置不同顏色的文本框,但需要過濾特定的顏色,即在特定複選框中單擊時只顯示一種顏色。獲取文本框的背景顏色

我在做什麼: 我遍歷html表逐行,嘗試獲取每個文本框的當前顏色,如果顏色匹配保持其他地方隱藏文本框顏色的行不匹配。我看到各種帖子顯示如何設置顏色,但不知道如何檢索文本框的當前顏色,嘗試在相同的線條,但沒有運氣,請幫助。

$('input[id$=cbx]').click(function() { 
var v = document.getElementById("<%=TextBox3.ClientID%>"); 
// to get the color value of current text box 
var v2 = v.style.background 
// below also does not work 
var v2 = v.style.background.val() 
// below also does not work 
var v3= v.css('background-color'); 
if (v2 == "green") 
    { 
    $('[id$=user1]').hide(); 
    } 
+1

添加HTML標記? – guradio

+0

它爲什麼被標記爲c# –

回答

2

'green'是rgb(0,128,0) 試試這個。

$('input[id$=cbx]').click(function() { 
    var v = $('#<%=TextBox3.ClientID').css('background-color'); 
    if(v== 'rgb(0, 128, 0)') { 
     $('[id$=user1]').hide(); 
    } 
}); 
+0

非常感謝,這對我來說是工作 – DBSand

1

您可以使用jQuery如下

var bgColor = $('#textbox-id-here').css('background-color'); 

你會得到RGB值獲得背景色。如果你想將其轉換爲十六進制值,可以使用下面的函數

function rgb2hex(rgb){ 
rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i); 
return (rgb && rgb.length === 4) ? "#" + 
    ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) + 
    ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) + 
    ("0" + parseInt(rgb[3],10).toString(16)).slice(-2) : ''; 
} 

編輯

假設你有表來保存你的文本框。那麼你可以做這樣的事情

$('#table-id tr td input[type=text]').each(function(){ 
    var bg = rgb2hex($(this).css('background-color')); 
    if(bg==='#ff0000'){ 
    $(this).hide(); 
    } 
}); 
2

我認爲propbelm是與這條線。由於您尚未共享HTML,因此無法瞭解此元素是否有style屬性。

v.style.background 

如果沒有style屬性v.style會給CSSStyleDeclaration但都將對空值。

如果在所述元素中定義這樣的例子下面

HTML

<input id= "abc" type = "text" class = "red" style = "background:red"> 

JS

var v = document.getElementById("abc"); 
var v2 = v.style.background 
console.log(v.style.background); // red 

DEMO

style屬性3210

會記錄red

如果在元素上沒有定義樣式屬性,則可以使用getComputedStyle屬性來獲取該值。但在這種情況下,該值將以rgb的格式顯示。

var v = document.getElementById("abc"); 
var v2 = window.getComputedStyle(v, null); 
console.log(v2.background) 

DEMO2

+0

很好的答案解釋每一件事。 –

+0

html是這個,我會嘗試你的建議,非常感謝! – DBSand