我已经尝试搜索这个论坛和网络寻找答案,但如果有任何问题,他们只是告诉我做我已经尝试过的事情。
所以,我的问题是这样的:我有一个运行两个验证器的表单,一个客户端jquery和一个服务器端php(重力表单)。这已经有一段时间了。但是,我们注意到我们收到了很多重复的提交,因此我想在客户端验证表单后禁用提交按钮。填写并提交表单后,如果字段有效,则运行客户端验证脚本 - 禁用提交按钮(以防止双重提交) - 并将脚本发送到第二次验证。如果任何字段无效,则验证应返回错误消息,并且不禁用提交按钮。
我环顾四周,最后补充说:
submitHandler: function(form) {
$(form).find(":submit").attr("disabled", true).attr("value",
"Submitting...");
form.submit();
}
到验证脚本的末尾。
然而,这并没有像我希望的那样结果。我已经尝试了上面的各种不同的变种,但是当我添加它时,脚本根本不会运行或只是禁用提交按钮(即使所有表单字段都无效),这使得它无法实现纠正并重新提交 - 您需要重新加载页面以再次启用提交按钮。我做错了什么?整个验证脚本如下所示:
jQuery(function() {
var $ = jQuery;
$(document).ready(function() {
$('#gform_6').validate( {
rules : {
input_6 : { required: true, personnummer: true }, // Personnummer
input_30 : { required: true, personnummer: true }, // Personnummer
input_10 : { required: true, minlength: 6 }, // telenr
"input_21.1" : { required: true }, // villkor
"input_3.3" : { required: function(element) { return (jQuery(element).parent().is(":hidden") == false); } }, //
"input_3.6" : { required: function(element) { return (jQuery(element).parent().is(":hidden") == false); } }, // efternamn
input_7 : { required: function(element) { return (jQuery(element).parent().is(":hidden") == false); }, email: true }, // e-post 1
input_31 : { required: function(element) { return (jQuery(element).parent().is(":hidden") == false); }, email: true, equalTo: "#input_6_7" }, // e-post 2 //adress : { required: true }, // adress
input_14 : { required: function(element) { return (jQuery(element).parent().is(":hidden") == false); } }, // lön
input_15 : { required: function(element) { return (jQuery(element).parent().is(":hidden") == false); }, number: true, minlength: 4, maxlength: 5 }, // clearingnr
input_16 : { required: function(element) { return (jQuery(element).parent().is(":hidden") == false); }, number: true, minlength: 7 } // kontonr
},
messages : {
//pnummer : "Födelsedatum ogiltigt, ska ha formatet 19770131-1234",
input_6 : "",
input_30 : "Födelsedatum ogiltigt, ska ha formatet 19770131-1234",
"input_3.3" : "Du måste fylla i ditt förnamn",
"input_3.6" : "Du måste fylla i ditt efternamn",
input_7 : "Ej giltig e-postadress",
input_31 : "Dina mail-adresser stämmer ej överens",
//adress : "Fyll i din adress",
input_14 : "Fyll i din lön",
input_10 : "Fyll i ditt telefonnummer",
input_15 : "Clearingnummer måste vara 4 eller 5 siffror",
input_16 : "Kontonummer måste vara minst 7 siffror",
"input_21.1" : "Du måste acceptera villkoren"
},
//debug : true,
errorClass : "form-error",
errorElement : "span"
//validClass : "valid",
submitHandler: function(form) {
$(form).find(":submit").attr("disabled", true).attr("value",
"Submitting...");
form.submit();
}
}
);
请
答案 0 :(得分:0)
我认为您的验证代码没有出错。问题更多的是提交表单。为什么在有效提交表单之前没有验证它?像这样:
submitHandler: function(form) {
//Validates your form
$(form).validate();
//Checks if the form rules are all valid
if($(form).valid()){
$(form).find(":submit").attr("disabled", true).attr("value",
"Submitting...");
form.submit();
}
}
或者,您可以添加一个var来检查表单上是否有提交。
<script type="text/javascript">
var isSubmit = false;
$(form).submit(function(){
//Checks if the form has already been submitted
if(isSubmit === false){
isSubmit = true;
//Do your form submission logic here
}
//Just in case you don't want it to conclude
return false;
});
</script>