我想在验证完成并且表单提交后停止禁用提交按钮,这样我就不会有多次插入数据库了。我没有用完整格式验证更新帖子,因为大多数人都说这是错误的,但我不这么认为。
这是提交:
<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>
答案 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");
});
});
答案 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。
为了澄清这一点,我在这里给出的示例仅要做的问题并禁用提交按钮。没有更少,仅此而已。它可以在一边验证,而不需要添加任何特殊的东西。