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

发布于 2024-12-19 07:43:22 字数 457 浏览 2 评论 0原文

我试图阻止系统用户不在 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 事件中,并在成功的初始单击后基本上对用户隐藏此按钮?

I am trying to prevent the users of a system to not press the “Submit” button twice within Oracle ApEx but am unsure how to target the following code using jQuery, i.e.:

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

I basically want to make sure that all required form validation has passed and when the user presses the “Submit” button, I would like to somehow hide the button immediately after it has been pressed.

I have tried the following code as I cannot use the src value, i.e.:

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

But this did not work.

How can I add this button to an onclick event and basically hide this button from the user on the successful initial click?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

姐不稀罕 2024-12-26 07:43:22

以下是如何使用 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/

或者,您可以仅使用图像而不使用 标签,如下所示:

<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. 对服务器进行编码以忽略某个时间段内来自同一客户端的两次提交。

Here's an example how to do this with jQuery:

HTML:

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

Code (run after document has loaded):

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

And, a working example: http://jsfiddle.net/jfriend00/CtpLU/

Or, you could do it with only the image and no <a> tag like this:

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

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

Other possible solutions besides hiding the button are:

  1. To set a flag that you've already submitted and don't do it a second time.
  2. Record the time of last submit and don't allow two submits within some period of time (like within 5 minutes).
  3. Unbind the event handler so clicking the submit button no longer does anything.
  4. Code the server to ignore two submits from the same client within some time period.
开始看清了 2024-12-26 07:43:22

也许设置一个全局变量,当第一次单击链接时该变量会发生变化

var clicked = false;

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

  // all of your code //

  clicked = false;
}

Maybe set a global var that changes when the link is first clicked

var clicked = false;

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

  // all of your code //

  clicked = false;
}
风为裳 2024-12-26 07:43:22

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

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

希望这会有所帮助。

谢谢。

Provide some ID to the anchor tag and then you may use the following code

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

Hope this helps.

Thanks.

九局 2024-12-26 07:43:22

最好的办法是向 元素添加一个 ID,否则以某种方式定位图像父级:

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

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

Best thing would be to add an ID to the <a> element, otherwise target the image parent somehow:

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

Any attribute can in theory be targeted, even the "alt" attribute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文