0
我正在使用jQuery進行驗證,然後AJAX在單個頁面上提交多個表單。用戶每次只能完成一次表單。目前,jQuery只能定位和驗證第一個表單,而我不確定如何調整它以處理其他表單的存在 - 該腳本取自一個可以很好運行的單一環境。我已經看到有關能夠做到這一點的各種帖子,但我無法弄清楚如何將它們應用於我的情況。jquery多個表格
<script type="text/javascript">
function validateEmail(email) {
var reg = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[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);
});
}
}
});
}
});
});
#是ID和所有ID必須是唯一的。將#send更改爲.send並將一個class =「send」添加到按鈕。然後將其他#改爲$(this).closest('form')。find(....);也許使用名稱而不是ID – mplungjan
@mplungjan謝謝。這讓我指出了正確的方向w /驗證。我可以根據表單提交是否在測試中工作來編輯問題。 –