2011-08-01 105 views
5

我有一个应用程序,用户可以在其中输入颜色名称,如blue,一旦他/她已完成该操作,div将变为该颜色。测试是否存在CSS颜色名称

代码此刻很简单:

<div class="colorBox" style="background-color: <%= color.name %>;"> 
</div> 

是否可以检查特定的颜色是否存在? 目前我只能想到一种解决方案:

循环显示颜色名称列表,如this one,但是没有更优雅的方式吗?例如

CSS.exists("blue") 
=> true 

此外,我不希望用户输入颜色十六进制。

回答

3

这应该工作。在用户设置颜色后调用;

function isColorValid(element, value) { 
    return element && element.style.backgroundColor === val; 
} 

编辑:jsFiddle

+0

看着你的jsfiddle ..非常酷! –

1

从你的问题看来,你想检查服务器本身。但是,颜色的识别是浏览器特定的行为,因此需要往返浏览器。

以下是一种方法。我会很高兴看到有人有更优雅的东西。我们假设你正在使用jQuery。

把'test'div放到你的html中。 HTML:

<div id="test"></div> 

JS:

function color_exists(color) { 
    if (color == 'white') { 
     return true; 
    } 
    $('#test').css('backgroundColor', color); 
    if ($('#test').css('backgroundColor') == color) { 
     return true; 
    } else { 
     return false; 
    } 
} 

我们依靠的事实,浏览器将简单地忽略颜色值,如果它不能识别它。