Image 禁用PrimeFaces p:datatable中的图像提交按钮

Image 禁用PrimeFaces p:datatable中的图像提交按钮,image,datatable,submit,primefaces,Image,Datatable,Submit,Primefaces,我有一个带有CommandButton的DataTable,其作用如下: <h:commandButton action="#{communicator.requestFavoriteDetails}" onclick="disableSubmit(this.id);" update="@navi:tableFavorites"> <f:setPropertyActionListener value="#{book}" target="#{favorites.selectedF

我有一个带有CommandButton的DataTable,其作用如下:

<h:commandButton action="#{communicator.requestFavoriteDetails}"
onclick="disableSubmit(this.id);"
update="@navi:tableFavorites">
<f:setPropertyActionListener value="#{book}"
target="#{favorites.selectedFavorite}" />
<f:ajax />  
</h:commandButton>
function disableSubmit(id) {
    var new_func = "function() { return false }";
    if ( typeof(document.getElementById(id)) == "object" && typeof(document.getElementById(id).onclick) == "function") {
        if ($("#" + escapeJSFid(id)).attr('onclick') != new_func) {
        var old_func = $("#" + escapeJSFid(id)).attr("onclick");
        $("#" + escapeJSFid(id)).attr('onclick','"+new_func+"').delay(2000).attr('onclick','"+old_func+"');
        }
    }
}
但是这个代码不起作用。FF不返回任何错误。。 哦escapeJSFid只是一个简单的函数:

function(id){ id.replace(/:/g,"\\:"); }
有人知道我如何防止这个请求被发送两次吗? 我知道还有很多其他的解决方案,我的代码写得很糟糕。。但我只是想让它起作用


致以最诚挚的问候

我似乎解决了我的问题:

function disableSubmit(id) {
    $("#" + escapeJSFid(id)).click( function() {
            // alert ("DISABLED");
        return false;
    });
}
Onclick:将执行函数disableSubmit(id)。onClick函数将被删除。 但是,我猜PrimeFacesDataTable在bean(某处)中存储了关于按钮等的信息。 按钮将自动恢复其旧值和事件(onclick)。 当我双击我的按钮时,我会看到禁用的警报消息。 但当我点击按钮时,等待2-3秒,然后再次点击按钮,没有消息出现。正在执行正常功能。所以我想我的按钮在“action=''”事件完成后会自动恢复