如何防止按下提交按钮两次

ton*_*nyf 7 jquery oracle-apex

我试图阻止系统用户在Oracle ApEx中不按两次"提交"按钮,但我不确定如何使用jQuery来定位以下代码,即:

<a href="javascript:doSubmit('MY_SUBMIT')">
<img border="0" id="MS_BTN" alt="Submit Request" src="submit_btn.gif">
</a>
Run Code Online (Sandbox Code Playgroud)

我基本上想确保所有必需的表单验证都已通过,当用户按下"提交"按钮时,我想以某种方式在按下后立即隐藏按钮.

我尝试了以下代码,因为我无法使用src值,即:

$("a:contains('MY_SUBMIT')").hide();
Run Code Online (Sandbox Code Playgroud)

但这没效果.

有人可以帮助我如何将此按钮添加到onclick事件,并基本上隐藏成功初始点击用户的这个按钮?

谢谢.

jfr*_*d00 7

以下是如何使用jQuery执行此操作的示例:

HTML:

<a id="mySubmit" href="#">
<img border="0" alt="Submit Request" src="submit_btn.gif">
</a>
Run Code Online (Sandbox Code Playgroud)

代码(在文档加载后运行):

$("#mySubmit").click(function(event) {
    $(this).hide();
    // do other stuff here
    return(false);
});
Run Code Online (Sandbox Code Playgroud)

并且,一个工作示例:http://jsfiddle.net/jfriend00/CtpLU/

或者,你可以只使用图像,没有<a>像这样的标签:

<img id="mySubmit" border="0" alt="Submit Request" src="submit_btn.gif">

$("#mySubmit").click(function(event) {
    $(this).hide();
    // do other stuff here
    return(false);
});
Run Code Online (Sandbox Code Playgroud)

除隐藏按钮之外的其他可能解决方案是:

  1. 设置您已经提交的标志,而不是第二次执行.
  2. 记录上次提交的时间,并且在一段时间内不允许两次提交(如5分钟内).
  3. 取消绑定事件处理程序,因此单击"提交"按钮不再执行任何操作.
  4. 对服务器进行编码,以在一段时间内忽略来自同一客户端的两个提交.