我有一个表单,我希望jquery检查并查看带有所需类的输入/选择值(这些类是否为#customerForm形式)是否为空。如果它们是我想阻止表单提交并将输入/选择框的颜色更改为红色。如果具有所需类的所有输入/选择值都具有值,我想提交表单,淡出表单输入并淡入下一个表单。这是我的代码:
$('#customerForm').submit(function (event) {
var value = $('.required').each();
if (value === "") {
value.addClass("invalid");
return false;
} else {
value.removeClass("invalid");
$('#billForm, #shipForm').fadeOut();
$('#payment-form').fadeIn();
}
});
问题是表单不检查输入值并反正提交表单。任何帮助都会很棒。
答案 0 :(得分:1)
$('。required')。each()返回一个输入数组。
您必须遍历每个输入并在表单提交之前检查该值。
$( ".required" ).each(function() {
//validation
});
更完整的例子:
$('#customerForm').submit(function (event) {
var error = false;
$( ".required" ).each(function() {
if ($(this).val() === "")
{
$(this).addClass("invalid");
error = true;
}
else
{
$(this).removeClass("invalid");
}
});
if(!error)
{
$('#billForm, #shipForm').fadeOut();
$('#payment-form').fadeIn();
}
else
{
return false;
}
});
答案 1 :(得分:0)
你不能使用每个字段抓住一个字段。每个都是迭代它们。
所以你需要这样做。
$('#customerForm').submit(function (event) {
var value = $('.required'); // Get all the required fields
var cnt=0; // setup a counter
// Loop therough required fields and apply error class based on value
$.each(value, function(i,val){
if (val.val() === "") {
cnt++;//add to the count of invalid fields
val.addClass("invalid");// apply error class
} else {
val.removeClass("invalid");
}
});
// Check the cnt variable is larger than 0, means we have errors
if(cnt!=0){
return false;
// otherwise, continue
} else {
$('#billForm, #shipForm').fadeOut();
$('#payment-form').fadeIn();
}
});
答案 2 :(得分:0)
你应该像这样循环遍历每个元素
$('.required').each((function( index ) {
var error = 0;
value = $(this).html();
if (value === "") {
this.addClass("invalid");
error = 1;
} else {
this.removeClass("invalid");
$('#billForm, #shipForm').fadeOut();
$('#payment-form').fadeIn();
}
if (error)
return false;
});