用户按住按钮时连续多次提交表格

时间:2013-09-17 19:27:45

标签: jsf-2 form-submit

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

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

基本上我只想按住按钮按钮继续调用mngr.doSomething方法。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

只有当您使用<f:ajax> 而不是呈现按钮本身时,才有可能。然后,您可以使用onmousedownonmouseup事件通过显式调用按钮的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;
}

答案 1 :(得分:1)

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