使用图像在primefaces selectOneRadio中选择单选按钮

时间:2016-08-02 16:18:02

标签: jsf primefaces zurb-foundation

我正在尝试使用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>

1 个答案:

答案 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");
    });