这看起来应该很简单,但我没有感觉。
我有一个执行长时间运行的服务器端任务(10-15 秒)的 JSF CommandButton。我已经看到按钮上下文在单击后发生变化的形式(按钮上的标签发生变化并且按钮在处理完成之前被禁用)。
我正在使用ICEFaces 并且在底层页面代码上将disabled 属性设置为布尔值。
绑定到按钮的动作侦听器会更改该布尔值以禁用它,但遗憾的是,JSP 上没有任何更改。
任何人?
您可以做的是使用 Javascript 更改按钮的状态:
<h:commandButton ... onclick="this.disabled=true"/>
Run Code Online (Sandbox Code Playgroud)
编辑关于评论:
如果前面的代码没有提交表单,那么您必须在单击后一段时间禁用该按钮,而不是在单击本身“期间”。您可以使用以下代码执行此操作:
<h:commandButton ... onclick="setTimeout('this.disabled=true', 100);"/>
Run Code Online (Sandbox Code Playgroud)
我不确定在 setTimeout 方法中直接使用this关键字是否能正常工作。如果没有,您可以使用另一种方法来做到这一点:
<h:commandButton ... onclick="disableButton(this.id);"/>
Run Code Online (Sandbox Code Playgroud)
使用以下 Javascript 函数:
function disableButton(buttonId) {
setTimeout("subDisableButton(" + buttonId + ")", 100);
}
function subDisableButton(buttonId) {
var obj = document.getElementById(buttonId);
if (obj) {
obj.disabled = true;
}
}
Run Code Online (Sandbox Code Playgroud)
(我确定可以增强此代码,因此)
| 归档时间: |
|
| 查看次数: |
13941 次 |
| 最近记录: |