2012-07-28 198 views
5

所以我必须提交按钮,看起来像这样:的JavaScript/jQuery的禁止提交点击按钮,防止重复提交

<a href="#" id="submitbutton" 
onClick="document.getElementById('UploaderSWF').submit();"> 
<img src="../images/user/create-product.png" border="0" /></a> 

当我双击它双重的提交显然,问题是, 我m将信息保存在数据库中,所以我将在那里发布dublicate信息, ,我不想那样。这位上传使用闪存和javscript这里是代码的一小片 ,是有关提交的东西(如果它帮助)

$.fn.agileUploaderSubmit = function() { 
    if($.browser.msie && $.browser.version == '6.0') { 
     window.document.agileUploaderSWF.submit(); 
    } else { 
     document.getElementById('agileUploaderSWF').submit(); 
     return false; 
    } 
} 

谢谢你们。 我感谢您的帮助。这真的是我无法自己做的事 ,因为我有这样一个与js的小经验,我真的不知道如何 做东西。 谢谢。

回答

8

试试这个剪断:

$('#your_submit_id').click(function(){ 
    $(this).attr('disabled'); 
}); 

编辑1

哦,你的情况这是一个链接,并没有提交按钮......

var submitted = false; 

$.fn.agileUploaderSubmit = function() { 
    if (false == submitted) 
    { 
     submitted = true; 

     if($.browser.msie && $.browser.version == '6.0') { 
      window.document.agileUploaderSWF.submit(); 
     } else { 
      document.getElementById('agileUploaderSWF').submit(); 
     } 
    } 

    return false; 
} 

编辑2

为了简化这个,试试这个:

<!doctype html> 

<html dir="ltr" lang="en"> 

<head> 

<meta charset="utf-8" /> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 

<script type="text/javascript"> 
<!--//--><![CDATA[//><!-- 
    $(document).ready(function() 
    { 
     $('#yourSubmitId').click(function() 
     { 
      $(this).attr('disabled',true); 

      /* your submit stuff here */ 

      return false; 
     }); 
    }); 
//--><!]]> 
</script> 

</head> 
<body> 

<form id="yourFormId" name="yourFormId" method="post" action="#"> 
    <input type="image" id="yourSubmitId" name="yourSubmitId" src="yourImage.png" alt="Submit" /> 
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

</body> 
</html> 

使用表单元素,如<input type="image" />,提交表单不是一个正常的链接。

这工作正常!

看看jQuery.post()提交您的表格。

祝你好运。

编辑3

这很适合我太:

<!doctype html> 

<html dir="ltr" lang="en"> 

<head> 

<meta charset="utf-8" /> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 

<script type="text/javascript"> 
<!--//--><![CDATA[//><!-- 
    $(document).ready(function() 
    { 
     var agileUploaderSWFsubmitted = false; 

     $('#submitbutton').click(function() 
     { 
      if (false == agileUploaderSWFsubmitted) 
      { 
       agileUploaderSWFsubmitted = true; 

       //console.log('click event triggered'); 

       if ($.browser.msie && $.browser.version == '6.0') 
       { 
        window.document.agileUploaderSWF.submit(); 
       } 
       else 
       { 
        document.getElementById('agileUploaderSWF').submit(); 
       } 
      } 

      return false; 
     }); 
    }); 
//--><!]]> 
</script> 

</head> 
<body> 

<form id="agileUploaderSWF" name="agileUploaderSWF" method="post" action="http://your.action/script.php"> 
    <input type="text" id="agileUploaderSWF_text" name="agileUploaderSWF_text" /> 
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

<a href="#" id="submitbutton"><img src="../images/user/create-product.png" border="0" /></a>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

</body> 
</html> 

希望这有助于。

+0

谢谢,我会尝试。 – inrob 2012-07-28 23:09:39

+0

你好Raisch。感谢您的解决方案。我申请你的第二个代码 ,它没有真正的工作。仍然提交多次。我是否也应用第一块代码? – inrob 2012-07-28 23:37:27

+0

@bornie - 没问题,所以你可以接受这个答案。 :-) – Raisch 2012-07-28 23:40:49

4

添加以下到onclick

onclick="document.getElementById('submitbutton').disabled = true;document.getElementById('UploaderSWF').submit();" 

这就是说,你将不得不处理这双在服务器端提交的预防也。

+0

谢谢,我会尝试。服务器端没有问题。我可以做到这一点,我知道我不能仅仅依靠js,因为有时用户在其浏览器上禁用了 javascript支持。 – inrob 2012-07-28 23:09:08

+0

该用户正在使用jquery ..我没有看到需要onClick属性或document.getElementById。 – Daedalus 2012-07-28 23:10:13

+0

@bornie,我做了一个修改。它应该是'document.getElementById(''**'submitbutton' **'').disabled' – Nivas 2012-07-28 23:12:43

-1

这将禁用所有提交按钮和链接与类提交,或者点击一个表单中的属性数据提交:

$(document).ready(function() { 
    $('form').submit(function() { 
     $(this).find('input[type="submit"]').attr('disabled', true); 
     $(this).find('a[data-submit], a.submit').click(function() { 
      return false; 
     }); 
    } 
}); 

这将自动适用于所有形式的方式。如果你只是想要一个,使用id而不是形式。不过,你可能已经知道了。

+0

那么问题是,如果你可以看得更仔细,提交按钮不在

。它是分开的。你认为你的代码仍然有效? – inrob 2012-07-29 15:21:39

相关问题