2013-08-17 100 views
0

我正在尝试使一些javascript进入/退出(onfocus/onblur)textfields。我想褪去“pretyped”文字,当你输入字段时会消失。问题是测试是否应删除文本框的值。一种方法是检查在进入文本字段的值,如果它等于pretyped文本,然后将值设置为无,就像这样:style.color if-statement not working

if(field.value=='username'){ 
    field.value=''; //removes pretyped text 
    field.style.color='rgb(0, 0, 0,)'; //turns text black 
} 

然而,用户可以复制pretyped文本,并输入该文本后,它也将被删除。我想这是一个小问题,但我希望尽可能地专业。为了解决这个问题,我尝试测试文本字段中文本的颜色,因为用户无法复制灰色预先定义文本的颜色。我使用此代码:

if(field.style.color=='rgb(150, 150, 150)'){ //default color in CSS 
    field.value=''; //removes pretyped text 
    field.style.color='rgb(0, 0, 0,)'; //turns text black 
} 

这不起作用的原因。预格式文本保留,颜色不变。我很确定访问CSS颜色的语法是正确的(field.style.color),因为它可以将颜色设置为黑色(但只在测试字段值时)。

任何帮助表示赞赏:)

编辑:有我的实际代码没有多余的逗号。

+0

虽然语法可能正常,但浏览器如何在内部表示颜色可能与您的字符串不同。用'console.log(field.style.color)'检查它,看看浏览器使用了什么字符串,因此你需要在你的'if()'中比较哪个字符串。 –

+0

您是指占位符文本?这是一个标准的HTML字段行为... – kunalbhat

+0

如果你想专业,使用占位符属性,而不是输入默认文本 –

回答

2

正如@MichaelBerkowski所说,field.style.color的值是未定义的。

选项1

如果您在JavaScript设置该值:

txt.style.color = 'rgb(150, 150, 150)'; 

您的代码应该工作。见this fiddle

选项2

您还可以使用:

window.getComputedStyle(this).getPropertyValue('color'); 

这将让在CSS设置的值。见this fiddle

+0

我在CSS中定义了字段的颜色。这不行吗? – August

+0

@八月我试图在jsfiddle中,它似乎没有。见[this](http://jsfiddle.net/nevster/Havza/1/)。 – Nev

+1

谢谢,这个作品。你认为这是最好的方法吗? – August