我使用 jQuery 进行验证,然后使用 AJAX 在单个页面上提交多个表单。用户每次访问只需填写一份表格。目前 jQuery 只能定位和验证第一个表单,我不确定如何调整它以处理其他表单的存在 - 该脚本是从一个运行良好的单一表单环境中获取的。我看过各种关于能够做到这一点的帖子,但我不知道如何将它们应用于我的情况。
<script type="text/javascript">
function validateEmail(email) {
var reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return reg.test(email);
}
$(document).ready(function() {
$("#contact").submit(function() { return false; });
$('a').click(function(e) {
$('#product').val($(this).attr('id'));
$('#sub').val('I am interested in ' + this.id);
});
$("#send").on("click", function(){
var emailval = $("#email").val();
var msgval = $("#msg").val();
var msglen = msgval.length;
var mailvalid = validateEmail(emailval);
var nameval = $("#name").val();
var namelen = nameval.length;
if(mailvalid == false) {
$("#email").addClass("error");
}
else if(mailvalid == true){
$("#email").removeClass("error");
}
if(msglen < 4) {
$("#msg").addClass("error");
}
else if(msglen >= 4){
$("#msg").removeClass("error");
}
if(namelen < 1) {
$("#name").addClass("error");
}
else if(namelen >= 1){
$("#name").removeClass("error");
}
if(mailvalid == true && msglen >= 4 && namelen >= 1) {
// if both validate we attempt to send the e-mail
// first we hide the submit btn so the user doesnt click twice
$("#send").replaceWith("<span class=sending>sending...</span>");
$.ajax({
type: 'POST',
url: 'rfq.php',
data: $("#contact").serialize(),
success: function(data) {
if(data == "true") {
$("#contact").fadeOut("fast", function(){
$(this).before("<span class=success>Success! Your message has been sent.</span>");
setTimeout("$.fancybox.close()", 5000);
});
}
}
});
}
});
});