Image 禁用PrimeFaces p:datatable中的图像提交按钮
我有一个带有CommandButton的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
<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=''”事件完成后会自动恢复