在 primefaces selectOneRadio 中使用图像选择单选按钮
Use image for radio button selection in primefaces selectOneRadio
我正在尝试使用 primefaces selectOneRadio 构建 UI。
目前我需要能够显示 5 个图像,它们实际上是单选按钮,并且在 selected 时图像会出现蓝色边框。隐藏了实际的单选按钮。
我尝试了带有自定义布局的 primefaces selectOneRadio,但单击图像没有 select 单选按钮,而且该按钮也可见。
这是我的代码。我为 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>
我使用一些 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");
});
我正在尝试使用 primefaces selectOneRadio 构建 UI。 目前我需要能够显示 5 个图像,它们实际上是单选按钮,并且在 selected 时图像会出现蓝色边框。隐藏了实际的单选按钮。
我尝试了带有自定义布局的 primefaces selectOneRadio,但单击图像没有 select 单选按钮,而且该按钮也可见。
这是我的代码。我为 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>
我使用一些 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");
});