Я объединил свой код jQuery Validate
для двух форм, подобных этому,
$("#formregister,#updateform").validate({
rules: {
captcha: {
required: true,
remote: {
url: "application/modules/customer_account/captcha/check.php",
type: "post"
}
},
//emails
email: {
required: true,
email: true,
minlength: 2,
remote: {
url: "checkemail.php", // temp - this should be module/controller/function
type: "post",
data: {
email: function() {
return $('#formregister:input[name="email"],#updateform:input[name="email"]').val();
}
}
}
},
//passwords
user_password: {
required: true,
minlength: 6
},
repassword: {
required: true,
minlength: 6,
equalTo: "#user_password"
},
// billing
bill_company_name: {
required: true
},
bill_first_name: {
required: true
},
bill_last_name: {
required: true
},
bill_address: {
required: true
},
bill_city: {
required: true
},
bill_state: {
required: true
},
bill_zip_code: {
required: true
},
bill_country: {
required: true
},
bill_phone: {
required: true
},
ship_company_name: {
required: true
},
ship_first_name: {
required: true
},
ship_last_name: {
required: true
},
ship_address: {
required: true
},
ship_city: {
required: true
},
ship_state: {
required: true
},
ship_zip_code: {
required: true
},
ship_country: {
required: true
},
ship_phone: {
required: true
},
businessType: {
required: true
},
businessValue: {
required: true
},
businessLicense: {
required: true
},
aboutUsHear: {
required: true
},
aboutUsValue: {
required: true
}
},
// messages
messages: {
captcha: {
required: "Enter the characters as seen on the image above.",
remote: $.format("Please provide Correct captcha!")
},
email: {
required: "Please enter valid email address",
minlength: $.format("Enter at least {0} characters"),
remote: $.format("{0} is already registered!")
},
password: {
required: "Please Provide a password",
rangelength: $.format("Enter at least {0} characters")
},
repassword: {
required: "Repeat your password",
minlength: $.format("Enter at least {0} characters"),
equalTo: "Enter the same password as above"
}
},
//on form submitting
submitHandler: function(form) { // for demo
form.submit();
},
// field messages
success: function(label) {
var name = label.attr('for');
var messages = new Array(
"Looks good1!",
"You got it1!",
"is Ok1!");
var num = Math.floor(Math.random() * 3);
label.text(name + ' ' + messages[num]).addClass("valid");
label.select(name + ' ' + messages[num]).addClass("valid");
}
});
Как видите, существуют две формы: #formregister
и #updateform
. Для #formregister
мне нужны только данные email
почты, а для #updateform
мне нужны email
и uid
которые не показаны здесь в этом коде. Когда я пытался отправить каждую из форм, данные POST не undefined
, почему? Что-то не так с тем, как я конкатенирую его? Есть ли способ, которым я все еще мог бы следовать за этими одиночными инициализациями проверки и не выдавать неопределенные данные для публикации? Благодарю.
Я не знаю, подходит ли это решение для всех, но обратите внимание на эту часть моего jQuery Validate
data: {
email: function() {
return $('#formregister:input[name="email"],#updateform:input[name="email"]').val();
}
}
обратите внимание, что идентификаторы формы и элемент, который необходимо найти, не разделены даже одним space
. Я редактировал свою форму, удачное редактирование, я думаю, и это сработало. Я не понял, почему для этого сценария имело space
простое space
. Во всяком случае, это решило. Спасибо всем.