1

当用户按住按钮时,如何实现多个表单提交。

<h:commandButton value="Multiple submission" action="#{mngr.doSomething}"/>

基本上,只要按住按钮,我只想继续调用 mngr.doSomething 方法。有任何想法吗?

4

2 回答 2

3

仅当您使用<f:ajax>不渲染按钮本身时才有可能。然后,您可以使用onmousedown和事件通过显式调用按钮onmouseup的处理程序来启动和停止愤怒提交,并且只要按钮似乎仍被按下,您就可以在成功返回时继续显式调用处理程序。onclick()<f:ajax onevent>onclick()

这是一个启动示例:

<h:form>
    <h:commandButton value="submit" action="#{bean.submit}" onmousedown="startRageSubmit(this)" onmouseup="stopRageSubmit(this)">
        <f:ajax onevent="processRageSubmit" />
    </h:commandButton>
</h:form>

(同样,使用 时<f:ajax render>,请确保按钮没有被选择器覆盖)

用这个 JS:

function startRageSubmit(button) {
    button.pressed = true;
    button.onclick();
}

function processRageSubmit(data) {
    if (data.status == "success" && data.source.pressed) {
        data.source.onclick();
    }
}

function stopRageSubmit(button) {
    button.pressed = false;
}
于 2013-09-17T20:04:26.890 回答
1

您可以使用 javascript 函数添加 javascript 事件侦听器,setInterval()以在您希望的时间间隔内提交表单(使用 AJAX)。

于 2013-09-17T19:36:31.467 回答