如何在鼠标悬停时显示输入字段

时间:2012-12-27 23:41:09

标签: jsf jsf-2

我有这个JSF表,用于显示数据和编辑数据:

<table>
    <ui:repeat var="ud" value="#{DCProfileTabGeneralController.dcData}">

        <tr>
            <td>Datacenter Type</td>
            <td>
                <h:outputText value="#{ud.type}" 
                              rendered="#{not DCProfileTabGeneralController.editable}" />
                <h:inputText value="#{ud.type}" rendered="#{DCProfileTabGeneralController.editable}" />
            </td>                                    
        </tr>
        <tr>
            <td>Date Added</td>
            <td>
                <h:outputText value="#{ud.dateAdded}" 
                              rendered="#{not DCProfileTabGeneralController.editable}" />
                <h:inputText styleClass="datepicker" value="#{ud.dateAdded}" rendered="#{DCProfileTabGeneralController.editable}" />
            </td>                                    
        </tr>
        <tr>
            <td>Hour Added</td>
            <td>
                <h:outputText value="#{ud.hourAdded}" 
                              rendered="#{not DCProfileTabGeneralController.editable}" />
                <h:inputText value="#{ud.hourAdded}" rendered="#{DCProfileTabGeneralController.editable}" />
            </td>                                    
        </tr>
        <tr>
            <td>Date Deployed</td>
            <td>
                <h:outputText value="#{ud.dateDeployed}" 
                              rendered="#{not DCProfileTabGeneralController.editable}" />
                <h:inputText styleClass="datepicker" value="#{ud.dateDeployed}" rendered="#{DCProfileTabGeneralController.editable}" />
            </td>                                    
        </tr>
        <tr>
            <td>Hour Deployed</td>
            <td>
                <h:outputText value="#{ud.hourDeployed}" 
                              rendered="#{not DCProfileTabGeneralController.editable}" />
                <h:inputText value="#{ud.hourDeployed}" rendered="#{DCProfileTabGeneralController.editable}" />
            </td>                                    
        </tr>

    </ui:repeat>
</table>

此解决方案工作正常但我想以这种方式扩展它:我想单击按钮,将edit标志设置为true。当我将鼠标移到表的值上时,outputText将更改为inputText。

还有一个简单的问题。如何在全局范围内向所有字段添加底部填充?

1 个答案:

答案 0 :(得分:0)

我建议您使用Richfaces库并使用<rich:inplaceInput>组件,如下所示。

<rich:inplaceInput value="hhhh" editEvent="onmouseover"/>

但是,如果你仍然坚持javascript这是一个概念。

<h:form id="myForm">
  <h:outputText value="aaa" id="outText"/><br/>
  <h:inputText value="aaa" style="display:none;" id="inText" />
</h:form>

这是javascript代码

<script>
    window.onload = function() {
        var outputText = document.getElementById("myForm:outText");
        var inputText = document.getElementById("myForm:inText");
        outputText.onmouseover = function() {
            outputText.style.display = 'none';
            inputText.style.display = '';
        }
        inputText.onblur = function() {
            outputText.style.display = '';
            inputText.style.display = 'none';
        }
    };
</script>

由于您使用的是ui:repeat,因此您应该相应地更改javascript代码。