我正在尝试使用primefaces selectOneRadio构建UI。 目前我需要能够显示5个实际上是单选按钮的图像,并且图像在选中时会变成蓝色边框。实际的单选按钮是隐藏的。
我尝试使用自定义布局的primefaces selectOneRadio,但单击图像不会选择单选按钮,按钮也可见。
这是我的代码。我为css使用基础。
<ul class="small-block-grid-5">
<p:selectOneRadio value="scooter" id="vehicleType" layout="custom">
<f:selectItem itemValue="scooter" />
<f:selectItem itemValue="bike"/>
<f:selectItem itemValue="car"/>
<f:selectItem itemValue="plane" />
<f:selectItem itemValue="unknown" />
<f:ajax event="click" render="addCost"/>
</p:selectOneRadio>
<li>
<p:radioButton id="scooter" for="vehicleType" itemIndex="0"></p:radioButton>
<h:graphicImage for="scooter" value="/images/scooter.GIF" width="50" height="50"/>
</li>
<li>
<p:radioButton id="bike" for="vehicleType" itemIndex="1"></p:radioButton>
<h:graphicImage for="bike" value="/images/bike.GIF" width="50" height="50"/>
</li>
<li>
<p:radioButton id="car" for="vehicleType" itemIndex="2"></p:radioButton>
<h:graphicImage for="car" value="/images/car.GIF" width="50" height="50"/>
<h:panelGroup id="addCost">
<h:outputText styleClass="breadcrumbs" value="Add 10$" />
</h:panelGroup>
</li>
<li>
<p:radioButton id="plane" for="vehicleType" itemIndex="3"></p:radioButton>
<h:graphicImage for="plane" value="/images/plane.GIF" width="50" height="50"/>
</li>
<li>
<p:radioButton id="unknown" for="vehicleType" itemIndex="4"></p:radioButton>
<h:graphicImage for="unknown" value="/images/unkown.GIF" width="50" height="50"/>
</li>
</ul>
答案 0 :(得分:2)
我用一些css和基础来解决这个问题。
<ul class="small-block-grid-5">
<p:selectOneRadio value="scooter" id="vehicleType" layout="custom">
<f:selectItem itemValue="scooter" />
<f:selectItem itemValue="bike"/>
<f:selectItem itemValue="car"/>
<f:selectItem itemValue="plane" />
<f:selectItem itemValue="unknown" />
<f:ajax event="click" render="addCost"/>
</p:selectOneRadio>
<li>
<div class="row">
<div class="small-1 columns invisibleDiv ">
<p:radioButton id="scooter" for="vehicleType" itemIndex="0"></p:radioButton>
</div>
<div class="small-11 columns imgSec">
<h:graphicImage for="scooter" value="/images/scooter.GIF" width="50" height="50"/>
</div>
</div>
</li>
</ul>
css
.invisibleDiv {
visibility: hidden;
}
.borderDiv {
border: 1px solid blue;
}
js
$(".imgSec").click(function(){
var radioInput= $(this).prev(".invisibleDiv ");
$(".imgSec").removeClass("borderDiv");
$(this).addClass("borderDiv");
});