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

时间:2011-12-01 05:11:19

标签: 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>

我基本上想确保所有必需的表单验证都已通过,当用户按下“提交”按钮时,我想在按下后立即隐藏按钮。

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

$("a:contains('MY_SUBMIT')").hide();

但这不起作用。

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

感谢。

4 个答案:

答案 0 :(得分:7)

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

HTML:

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

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

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

并且,一个工作示例: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);
});

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

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

答案 1 :(得分:3)

也许设置一个在首次点击链接时会发生变化的全局变量

var clicked = false;

function doSubmit(){
  if(clicked) return;
  clicked = true;

  // all of your code //

  clicked = false;
}

答案 2 :(得分:1)

为锚标记提供一些ID,然后您可以使用以下代码

$('#anchorTagId').unbind('click.submit').bind('click.submit', function (){
  $(this).unbind('click.submit');
  $(this).hide();
  doSubmit('MY_SUBMIT');
});

希望这有帮助。

感谢。

答案 3 :(得分:0)

最好的办法是在<a>元素中添加一个ID,否则以某种方式将图像父目标定位:

$("img[src='submit_btn.gif']").click(function() {
    $(this).parent().hide();
});

理论上任何属性都可以成为目标,甚至是“alt”属性。

相关问题