【发布时间】:2015-12-30 18:05:50
【问题描述】:
好的,这就是我的情况...
我使用 Bootstrap 3 构建了一个响应式登录页面,该页面通过我们的电子邮件/登录页面营销自动化工具 Marketo 托管。该页面的目的是捕获潜在客户,所以现在我在页面上有 2 个表单,一个响应迅速且美观的引导表单,一个隐藏表单,所有信息实际上都是通过该表单提交的。
实际提交信息的隐藏表单是在 Marketo 中预先构建的。他们将表单设计为通过在所见即所得编辑器中拖放或手动嵌入来实现。问题是它们不是为完全响应而构建的,而且让表单按照我想要的方式运行是一件令人头疼的事情,而且比让表单按照我想要的方式运行更麻烦,这导致我采用这种方法。
我遇到的问题是我的隐藏表单在收到来自我的引导表单的有效输入后实际上并没有提交信息。
我需要帮助完成的解决方案是编写一个 javascript 代码链,告诉引导表单验证输入的输入。当所有输入都有效时,将所有信息传递给隐藏表单,然后提交。只需单击引导按钮即可。
这是我为表单编写的 javascript/JQuery 代码。
$(document).ready(function () {
var validator = $("#resBSForm").bootstrapValidator({
fields : {
FirstName : {
message : "First name is required",
validators : {
notEmpty : {
message : "Please provide your first name"
}
}
},
LastName : {
message : "Last name is required",
validators : {
notEmpty : {
message : "Please provide your last name"
}
}
},
Title : {
message : "Job title is required",
validators : {
notEmpty : {
message : "Please provide your job title"
}
}
},
Email : {
message : "Email address is required",
validators : {
notEmpty : {
message : "Please provide a valid email address"
},
emailAddress : {
message : "Email address was invalid"
}
}
},
Phone : {
message : "Phone number is required",
validators : {
notEmpty : {
message : "Please provide a valid phone number"
}
}
},
Company : {
message : "Company name is required",
validators : {
notEmpty : {
message : "Please provide your company name"
}
}
},
NumberOfEmployees : {
validators : {
notEmpty : {
message : "Please select your number of employees"
}
}
},
callDate : {
validators : {
notEmpty : {
message : "Please select your call date"
}
}
},
callTime : {
validators : {
notEmpty : {
message : "Please select a call time"
}
}
},
timeZone : {
validators : {
notEmpty : {
message : "Please select your time zone"
}
}
}
}
});
});
$(document).ready(function fillForm(){
var form1 = $('#resBSForm'),
form2 = $('#mktoForm_1867');
$('#BSFormBTN').click(function(){
$(':input[name]', form2).val(function(){
return $(':input[name='+ this.name +']', form1).val();
});
});
});
$(document).ready(function() {
$(function fillForm () {
$('#BSFormBTN').click(function() {
$('#mktoForm_1536 button.mktoButton').click();
});
});
});
【问题讨论】:
-
提示:在服务器端进行验证,因为您无法完全控制客户端。
-
隐藏表单已经在服务器端验证。引导验证只是为了确保传递给隐藏表单的信息是有效的。
-
我很好奇,为什么有两种形式?
-
基础知识可能最终会导致引导程序“提交”按钮实际上只是一个空的 div,然后听一下点击,填写隐藏的表单,然后你就可以执行 $("hiddenform" ).submit()
-
对这个问题也有点困惑:“问题是隐藏表单似乎没有像应有的那样将提交的信息输出到活动活动中”。它怎么不把它“像它应该做的那样”放到活跃的广告系列中它应该做什么?
标签: javascript jquery forms twitter-bootstrap