jQuery控制标签的边框颜色

时间:2011-11-06 21:33:47

标签: javascript jquery css colors border

我的jQuery函数看起来像

$('input[type="text"]').focus(function() {  
       $("label").css("border-bottom-color", "red");
    });  
    $('input[type="text"]').blur(function() {  
       $("label").css("border-bottom-color", "#e6e6e6");
    });  

1)我的表单中有一堆文本输入。我想要做的是改变聚焦文本框标签的底部边框颜色(每个文本框都有一个标签。我想只更改聚焦文本框标签的边框颜色)。但是我的功能会立刻改变所有标签的边框颜色。如何解决这个问题?

2)我有2个表格。使用id的form1和form2。我想对第二种形式做同样的事情,但颜色将是另一种形式。如何修改这个功能?

我的表单看起来像那样

<form id="form1">
 ...
<label for="fname">First Name</label>
<input name="fname" placeholder="please enter your first name" type="text" /> 
 ...
</form>

<form id="form2">
 ...
<label for="job">Your Job</label>
 ...
<input name="job" placeholder="please enter your job" type="text" />
</form>

4 个答案:

答案 0 :(得分:1)

这个小提琴怎么样?

http://jsfiddle.net/RvYca/3/

label标记的for属性引用了input的{​​{1}}属性,而不是id。 我也将样式移到了css。

答案 1 :(得分:1)

同时使用CSS和JavaScript:

$('input:text, input:password, textarea').focus(
    function(){
        $(this).prev('label').addClass('focused');
    }).blur(
    function(){
        $(this).prev('label').removeClass('focused');
    });

而且,在CSS中:

#form1 label.focused {
    border-bottom: 1px solid red;
}

#form2 label.focused {
    border-bottom: 1px solid green;
}

JS Fiddle demo

答案 2 :(得分:0)

对于问题1,使用$(this)作为选择器:

$('input[type="text"]').focus(function() {  
   $(this).css("border-bottom-color", "red");
});  
$('input[type="text"]').blur(function() {  
   $(this).css("border-bottom-color", "#e6e6e6");
});

对于问题2,您的意思是,在用户选择了两个项目后,是否按顺序?它们不能同时成为焦点。

答案 3 :(得分:0)

你的选择器不够具体来操纵css。您必须具体说明要更新的标签。像这样:

$('input[type="text"],textarea,input[type="password"]').focus(function() {  
   $("label[for='" + $(this).attr('id') + "']").css("border-bottom-color", "red");
});