【发布时间】:2018-06-28 05:10:30
【问题描述】:
我真的很挣扎。
我要为我的雇主做的是提交一份经过验证的表格,问题是基于提交的字段一个弹出式表格(使用 fancybox 版本 3 - http://fancyapps.com/fancybox/3/)条件是当地点是苏格兰时最终金额超过 4,550 英镑(第二个选择框中的选项 2)。
我使用$(this).validate () 运行验证(因为页面上有多个表单)。然后我想控制submitHandler,并根据条件运行一个fancybox作为confirmation,这样当fb.box中出现的按钮被点击时,表单提交。
我觉得我没有传递一些变量或遗漏一些重要的东西。我知道还有其他一些方法可以实现这一点,但由于使用 fancybox 的样式选项,这是首选方法,请帮助,我已经绞尽脑汁 2 天试图做到这一点。
我最后的手段是从验证表单中获取变量并将其传递到fancybox,然后从框中提交(不理想,但可能是唯一的方法)。如果您想查看表格,请访问:
$('form').each(function() {
$(this).validate({
rules:{
location:"required",
debtAmount:"required",
incomeStatus:"required",
livingStatus:"required",
assets:"required",
fullname:{
required:true,
minlength:3
},
phonenumber:{
required:true,
minlength:11,
maxlength:11
},
email:{
required:true,
emailvalidate:true
},
gridCheck:"required"
},
messages:{
location:"Please select what region you live in",
debtAmount:"Please select your approximate debt level",
incomeStatus:"How do you recieve your income",
livingStatus:"What's your current living status",
assets:"Please select an option",
fullname:"Please enter you full name",
phonenumber:"Please enter a valid phone number",
email:"Please enter a valid e-mail address",
gridCheck:"We require your consent to submit your enquiry"
},
submitHandler: function(form) {
// some other code
// maybe disabling submit button
// then
var location = $('[name=location]').val();
var debtAmount = $('[name=debtAmount]').val();
var incomeStatus = $('[name=incomeStatus]').val();
var livingStatus = $('[name=livingStatus]').val();
var assets = $('[name=assets]').val();
if(location == 'Scotland'){
$.fancybox.open({
src :
'<div class="container"><div class="row"><div class="col"><h1 class="text-center">Thanks for you Enquiry</h1></div></div><div class="row"><div class="col text-center><p>Based on the information you have submitted, an IVA may not be suiteable.</p><p>There are many ways in which we can still help and we work with a panel of debt advice companies that could stilll help.</p><p>Your data is important to us and we just want to maek sure you are happy for you to refer you detaisl for a more suitable soluiotion.<p></div></div><div class="row"><div class="col-md-6 col-sm-12"><button data-value="0" data-fancybox-close class="btn">I need a bit more time</button></div><div class="col-md-6 col-sm-12"><button data-value="1" data-fancybox-close class="btn">Sure that is ok</button></div></div></div>',
type : 'inline',
opts : {
afterLoad: function( instance, current, e) {
var button = e ? e.target || e.currentTarget : null;
var value = button ? $(button).data('value') : 0;
if(value == 1){
alert():
}
}
}
})
}
else {
//$(form).submit();
}
}
});
}
【问题讨论】:
-
你能创建jsfiddle吗?
-
是的,我会在一小时内完成一个
-
你能在那里做ajax post吗?否则调用
$(form).submit();发帖会出现“递归过多”的错误 -
请更好地解释您要解决的实际问题。
-
感谢 cmets 家伙 JsFiddle - jsfiddle.net/Callistusa/p8Lc42go essentaill 如果字段位置是 Sotland 并且字段 debtAmount 不等于第一个可选选项,则在单击表单上的提交按钮时,然后检查是否子字段 livingStatus 不等于房主,然后其他两个选定的字段收入状态等于福利和资产不等于是,然后显示一个弹出窗口,显示 GDPR 声明,我们将在其他地方引用详细信息。
标签: jquery jquery-validate fancybox-3