4

我有这个简单的 JSF 按钮:

//Question Dialog
function deletedialog(button, a){      
    $("<div />", {
        text: a
    }).dialog({        
        width: 600,
        buttons: {
            "Ok": function() { 
                $("#form\\:deleterow").click();
                //  $('input[id$="deleterow"]').click();               
                $(this).dialog("close");
                button.value = "Processing...";
                button.disabled = true;                  
            }, 
            "Cancel": function(event) { 
                $(this).dialog("close");
                event.preventDefault();
                button.value = "Delete";
                button.disabled = false;
            } 
        }
    });         
}


                    <!-- hidden button -->
                    <h:commandButton id="deleterow" value="HiddenDelete" action="#{AccountsController.deleteSelectedIDs}" style="display:none">
                        <f:ajax render="@form"></f:ajax>
                    </h:commandButton>
                    <!-- the delete button -->
                    <h:button onclick="deletedialog(this, 'Do you want to delete the selected rows?'); return false;" >
                        <h:graphicImage name="small-hover.png" library="images" title="Delete" />
                    </h:button>    

我想创建 png 图像,它将成为按钮的视觉主体。我唯一要更改的是按钮的标题,我每次都会使用value按钮的属性设置它。这可能吗?现在,当我加载 JSF 页面时,我只看到没有标签的空按钮。

PS 1 我得到这个结果:

在此处输入图像描述

4

2 回答 2

3

使用将包装您的图像的命令链接:

<script type="text/javascript">
    function deletedialog(button, a) {
        $("<div />", {
            text: a
        }).dialog({        
            width: 600,
            buttons: {
                "Ok": function() { 
                    //$("#form\\:deleterow").click();
                    //using the hidden button click
                    document.getElementById('myForm:deleterow').click();
                    //  $('input[id$="deleterow"]').click();               
                    $(this).dialog("close");
                    button.value = "Processing...";
                    button.disabled = true;                  
                }, 
                "Cancel": function(event) { 
                    $(this).dialog("close");
                    event.preventDefault();
                    button.value = "Delete";
                    button.disabled = false;
                }
            }
        });
    }
</script>

<h:form id="myForm">
    <h:commandLink onclick="deletedialog(this, 'Do you want to delete the selected rows?')) return false;">
        <h:graphicImage name="small-hover.png" library="images"
            title="#{someBean.imageTitle}" />
    </h:commandLink>
    <h:commandButton id="deleterow" value="HiddenDelete" action="#{AccountsController.deleteSelectedIDs}" style="display:none">
        <f:ajax render="@form" />
    </h:commandButton>
</h:form>

<h:graphicImage/>此外,在mkyong 网站中有一个很好的例子。


根据您的评论,您似乎想要一个带有图标的按钮。此外,真正的动作是由你的 hidden 执行的<h:commandButton>。所以我建议你阅读这个答案:

您的代码将是这样的:

<h:commandButton id="deleterow" value="HiddenDelete" action="#{AccountsController.deleteSelectedIDs}" style="display:none">
    <f:ajax render="@form" />
</h:commandButton>
<button type="submit" onclick="deletedialog(this, 'Do you want to delete the selected rows?')) return false;"><img src="resources/images/small-hover.png" /> Delete</button>

是的,您可以将基本 HTML 与 JSF 代码混合使用,但请阅读有关 IE 6 浏览器客户端上此实现的链接警告。

于 2012-08-03T19:22:59.620 回答
1

我会从基础开始。由于您甚至没有看到图像,因此当您右键单击浏览器窗口并选择“查看源代码”时,它是否会提供有关图像是否被插入到页面上的任何有意义的信息?如果您没有正确的图像路径,它将不会在页面上呈现图像。这是首先要检查并尝试纠正的事情。(即计算机是否已插入)。

于 2012-08-20T19:50:16.797 回答