【问题标题】:IE submit the forms twiceIE 提交表单两次
【发布时间】:2013-01-17 07:05:37
【问题描述】:

我在 IE 中遇到了这个问题,有时我的表单提交了两次。我知道单击按钮两次的问题,这不是问题。但就我而言,我只点击一次。我检查了数据库中的记录,有两条记录。

<input type="button" value="Approve" name="btn_approve" id="btn_approve">
<input type="button" value="Reject"  name="btn_reject" id="btn_reject">

<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script> 
<script type="text/javascript" src="js/jquery-ui-1.8.20.custom.min.js"></script> 
<script>
$(document).ready(function () {
    $("#btn_approve").click(function () {
        // some validation before submitting the form

        $("#my_form").submit();
    });
});
</script>

【问题讨论】:

    标签: jquery html double-submit-problem


    【解决方案1】:

    阻止按钮的默认行为:

    <input type="button" value="Approve" name="btn_approve" id="btn_approve">
    <input type="button" value="Reject"  name="btn_reject" id="btn_reject">
    
    <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script> 
    <script type="text/javascript" src="js/jquery-ui-1.8.20.custom.min.js"></script> 
    <script>
    $(document).ready(function () {
        $("#btn_approve").click(function (e) {
            e.preventDefault();
            // some validation before submitting the form
    
            $("#my_form").submit();
        });
    });
    </script>
    

    【讨论】:

    • 是的,这是正确的。 e.preventDefault();应该在 submit() 之前首先执行。谢谢!
    • 我刚才也有这个,有一个自己创建的 css 按钮(几个 div 放在一起)。我不知道为什么,但这也为我解决了这个问题。
    【解决方案2】:

    假设#btn_approve实际上是#my_form的一个提交按钮inside,你是通过.submit触发表单提交,浏览器也正常提交。改为:

    $("#btn_approve").on('click', function (e) {
       $("#my_form").trigger('submit');
    
       e.preventDefault();
    });
    

    【讨论】:

    • 在问题上显示的代码中,btn_approve 的类型为 button
    • @MartínCanaval 1. 你怎么知道 2. 为什么重要?
    • &lt;input type="button" value="Approve" name="btn_approve" id="btn_approve"&gt; 这是他发布的代码的第一行。我只是提一下以防万一。
    • @MartínCanaval 哦,我明白了,我以为你的意思是它是一个按钮 element。我认为问题在于type="button" 在 IE 中提交表单,而不是在其他浏览器中提交。只是猜测。
    【解决方案3】:

    我也有同样的问题。 当我将记录保存到数据库时,我会为其打上时间戳。 因此,如果为特定的唯一用户提交了一条记录,在 2 秒内,我只是忽略了重复项。 这样我就不需要在客户端检查浏览器类型和兼容性,只需在服务器端分别处理浏览器的问题。

            '' Count the number of submissions, for the user, within the 2 seconds.
            objRS.open "select count(*) as C FROM [ADS].[dbo].[VIP_USERS] where userid = '" & Trim(Request("USERID")) & "' and datediff(ss, created, GETDATE()) <= 2", Application("sConn")
    

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 1970-01-01
      • 2013-03-27
      • 2014-11-03
      • 2015-04-04
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多