2017-03-09 178 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