Javascript 当outputLabel聚焦时,在panelGrid中设置输入组件的样式

Javascript 当outputLabel聚焦时,在panelGrid中设置输入组件的样式,javascript,html,jsf,primefaces,Javascript,Html,Jsf,Primefaces,我正在使用JSF和Primefaces。。我需要当我聚焦在标签上时,输入文本得到背景色 这是我的代码: 你的问题有几处不对劲 首先,您不能聚焦p:outputLabel(它呈现为HTML标签)。单击标签将聚焦链接字段。这就引出了第二个问题 为了使p:outputLabel按照中的指定工作(验证错误、错误样式、所需指示器等),您需要使用for属性将其链接到输入组件(如在常规HTML中) 因此,如果将for添加到标签中,只需使用:focusCSS选择器设置输入字段的样式即可 从技术上讲,您可以让您

我正在使用JSF和Primefaces。。我需要当我聚焦在标签上时,输入文本得到背景色 这是我的代码:




你的问题有几处不对劲

首先,您不能聚焦
p:outputLabel
(它呈现为HTML
标签
)。单击标签将聚焦链接字段。这就引出了第二个问题

为了使
p:outputLabel
按照中的指定工作(验证错误、错误样式、所需指示器等),您需要使用
for
属性将其链接到输入组件(如在常规HTML中)

因此,如果将
for
添加到标签中,只需使用
:focus
CSS选择器设置输入字段的样式即可

从技术上讲,您可以让您的单击侦听器像这样工作(但这没有意义):

焦点
模糊
监听器添加到输入字段中,并使用监听器在相应标签上切换CSS类会更有意义。例如:

$("input").focus(function(){
    $("label[for=\""+ this.id +"\"]").addClass("focus");
});
$("input").blur(function(){
    $("label[for=\""+ this.id +"\"]").removeClass("focus");
});
另见:


请尝试创造好的标题……我收回了我的重复投票,因为它不能与
p:panelGrid
结合使用。你需要进入
tr
并从那里搜索。当你从互联网上复制和粘贴代码时,试着理解它的功能,不要盲目地使用它,并希望它能简单地工作。伙计们,我只需要一个代码,当我点击地图上的任何地方时,可以使输入得到背景色。这个想法传到了我的脑海从头开始。。但我必须为我拥有的所有输入字段逐个添加“for”。。那么还有其他解决方案吗?您可以创建一个结合了这两者的自定义标记。看见但是如果没有的,你的标签就毫无用处了。我建议添加它们,即使这需要一些工作。
 $('.ui-outputlabel').click(function() {
    $(this).find('.ui-inputtext').css('background-color', 'red');
});
$("label").click(function(){
    document.getElementById(this.htmlFor).style.backgroundColor = "red";
});
$("input").focus(function(){
    $("label[for=\""+ this.id +"\"]").addClass("focus");
});
$("input").blur(function(){
    $("label[for=\""+ this.id +"\"]").removeClass("focus");
});