尝试在动态表单上设置焦点输入的标签

时间:2013-07-10 14:12:33

标签: jquery css forms label

  

已解决:似乎我的问题是由CSS继承引起的。为了记录,我原来问题中的第二个片段实际上有效。

我有带输入和标签的html表单。

当我关注输入时,我可以使用jquery成功更改标签样式。这是使用以下代码段完成的:

$("input, textarea").focus(function(){
  $("label[for='" + this.id + "']").addClass("labelfocus");
})
.blur(function()
{
  $("label").removeClass("labelfocus");
});

但是,这不适用于动态生成的表单。

我尝试过使用jquery的“$(document).on(...”但是我也没有这样做。请参阅下面的代码:

$(document).on({
    focus: function() {
        $("label[for='" + this.id + "']").addClass("labelfocus");
    },
    blur: function() {
        $("label").removeClass("labelfocus");
    }
}, "input, textarea");

有什么建议吗?谢谢!

3 个答案:

答案 0 :(得分:0)

可能有一种更清洁的方式,但我会像这样尝试

$('input, textarea').on('focus', function() {
$("label[for='" + this.id + "']").addClass("labelfocus");
});

$('input, textarea').on('blur', function() {
$("label").removeClass("labelfocus");
});

答案 1 :(得分:0)

如果你使用$(document).on而不是$("input, textarea").on,我认为它会起作用。

答案 2 :(得分:0)

我没有测试过这个或者其他什么,但是你不想进一步指定blur事件来使用完整的$(“label [for ='”+ this.id +“']”)? / p>

我的想法告诉我,如果你专注于输入和鼠标点击或直接选项卡到另一个输入,那么就会发生相互矛盾的焦点/模糊操作。