如何使用JQuery验证添加STOP Multiple Form Submit

时间:2013-08-01 17:40:39

标签: jquery forms jquery-validate

我想在验证完成并且表单提交后停止禁用提交按钮,这样我就不会有多次插入数据库了。我没有用完整格式验证更新帖子,因为大多数人都说这是错误的,但我不这么认为。

这是提交:

<input class="button2" style="border-right:none; font-size:13px;" name="List Item" id="submit" type="submit" value="List Item" />

以下jQuery验证:

   <script src="http://jquery.bassistance.de/validate/jquery.validate.js"></script>
<script src="http://jquery.bassistance.de/validate/additional-methods.js"></script>   

<script>
$( "#UploadForm" ).validate({

  errorLabelContainer: "#messageBox",
  wrapper: "td",

  rules: {  

   <?php if ($type == 'Aution' || $type == 'Both') {  ?> 
    auction_price: {
    required: true,
    number: true,
    min: 1.00
    }, 
    auction_reserve_price: {
    number: true,
    range: [1.00, 500000.00]
    },
    <?php } ?>

    <?php if ($type == 'BuyItNow' || $type == 'Both') {  ?> 
    auction_bin_price: {
    required: true,
    number: true,
    range: [1.00, 500000.00]

    }, <?php } ?>


    Country: {
        required: true
    },

    select3: {
        required: true
    },
    select2: {
        required: true
    },
    auction_postage_type: {
        required: true

    },
        auction_postage_type_price: {
        number: true,
        range: [0.00, 500000.00]
    },

    auction_int_postage_type_price: {
        number: true,
        range: [1.00, 500000.00]
    },

     Europe1: {
        number: true,
        range: [1.00, 500000.00]
    },
     Russia1: {
        number: true,
        range: [1.00, 500000.00]
    },
     NorthAmerica1: {
        number: true,
        range: [1.00, 500000.00]
    },
     Australia1: {
        number: true,
        range: [1.00, 500000.00]
    },
     SouthAmerica1: {
        number: true,
        range: [1.00, 500000.00]
    },
     Africa1: {
        number: true,
        range: [1.00, 500000.00]
    },
     Asia1: {
        number: true,
        range: [1.00, 500000.00]
    },
     MiddleEast1: {
        number: true,
        range: [1.00, 500000.00]
    },


    <?php if ($type == 'BuyItNow') {  ?> 
    auction_item_quantity: {
        required: true,
        digits: true,
        range: [1, 99]
    },
    <?php } ?>

    auction_description: {
    required: true
    },
    auction_int_postage_type: {
    required: true
    },
    listing_type: {
    required: true
    }
  },
  messages: {
    auction_price: "Please Enter Auction Start Price - In Decimal Format, minimum value 1.00",
    auction_reserve_price: "Please Enter Auction Reserve Price - In Decimal Format 0.00",
    auction_bin_price: "Please Enter Buy It Now Price - In Decimal Format, minimum value 1.00",
    select3: "Please Select Main Category",
    select2: "Please Select Sub Category",
    auction_item_quantity: "Please Enter Quentity - min 1 - max 99",
    auction_description: "Please Enter Auction Description -  Min 10, Max 1000 characters",
    listing_type: "Please Select Listing Type",
    auction_postage_type: "Please Select Postage Type",
    auction_int_postage_type_price: "Please Enter International Postage Cost In Decimal Format, minimum value 1.00",
    auction_postage_type_price: "Please Enter Postage Cost In Decimal Format",
    auction_int_postage_type: "Please Select",
    Country: "Please Select Country",

  },
  submitHandler:function(form){
       $('#submit').attr('disable',true).css('pointer-events','none');
  }


});
</script>

4 个答案:

答案 0 :(得分:4)

submitHandler停用提交按钮:

$("#UploadForm").validate({

   //all your options here

   submitHandler:function(form){
       $('#submit').attr('disabled','disabled');
   }
});
只有在成功验证表单后才会调用

submitHandler。只要它返回true,表格将在之后正常提交。如果你想获得更多花哨而不是禁用提交按钮,你可以有一个全局变量来记住表单是否已经提交,然后在第一次之后从这个函数返回false。

第一次提交后,提交按钮被禁用的工作示例:http://jsfiddle.net/ryleyb/hHAvD/

答案 1 :(得分:2)

最简单的方法应该可以在任何地方使用,显然你会运行你的代码并在必要时重新启用它:

$(document).ready(function(){
    $("#submitBtn").on("click",function(){
        $(this).attr("disabled","disabled");
    });
});

http://jsfiddle.net/calder12/8Syrh/1/

答案 2 :(得分:0)

我有同样的问题,我带来了一个简单的解决方案。 从javascript我每次点击提交时都会在cookie中发送一个标志,然后检查服务器端的cookie,如果cookie是有效的,那么执行相应的操作,否则将控件重定向到用户。

注意:我是一名java开发人员,所以我没有上传代码,但我认为这也可以用.net,php和其他语言实现。

答案 3 :(得分:-1)

我认为这样的事情应该有效

$( "#UploadForm" ).submit(function(){
  //some other code here
  $('#submit').attr('disable',true).css('pointer-events','none');
});

属性“禁用”通常会使按钮无法使用。指针事件是一个较新的css变量,可以与event.preventDefault();

相同

但是也总是有防止默认:

$( "#UploadForm" ).submit(function(){
  //some other code here
  $('#submit').click(function(event){
     event.preventDefault();
  });
});

你在使用ajax吗?如果是这样,您可能希望删除disable属性并在ajax发送其回调后将指针事件更改为auto。

为了澄清这一点,我在这里给出的示例要做的问题并禁用提交按钮。没有更少,仅此而已。它可以在一边验证,而不需要添加任何特殊的东西。