2016-02-05 64 views
0

我的表单设置为手风琴。我想验证每个部分,而不是提交时的总表单。我无法得到这个工作。使用jquery验证手风琴表单部分

我的形式的位(我离开了隐藏字段出):

<form id="test"> 
<div id="accordion"> 
<h3 class="frm_pos_top"><a href="#">Header</a></h3> 
<div> 
<div id="frm_field_179_container" class="frm_form_field form-field 
frm_required_field form-group frm_top_container frm_first frm_half"> 
<label for="field_lz5ptt" class="frm_primary_label control-label">Question1 
<span class="frm_required">*</span> 
</label> 
<select name="item_meta[179]" id="field_lz5ptt" data-frmval="(Blanco)" 
class="form-control" > 
<option value="(Blanco)" selected="selected"> </option> 
     <option value="10" >1</option> 
     <option value="11" >2</option> 
     <option value="12" >3</option> 
     <option value="13" >4</option> 
     <option value="20" >5</option> 
</select> 
</div> 
<div id="frm_field_86_container" class="frm_form_field form-field 
frm_required_field form-group frm_top_container frm_half"> 
<label for="field_n9ta9n" class="frm_primary_label control-label">Question 2? 
<span class="frm_required">*</span> 
</label> 
<div class="input-group"><span class="input-group-addon">€</span> <input 
type="tel" id="field_n9ta9n" name="item_meta[86]" value="" maxlength="6" 
class="add_thou form-control" /> 
</div> 
</div> 
<div class="back_next" style="float:right;"><input type="button" value="Volgende" id="button1" class="x-btn x-btn-flat x-btn-rounded x-btn-small volgende-button"/></div> 

而我的JS验证:

jQuery(document).ready(function($) { 
var a = "item_meta[179]"; 
var b = "item_meta[86]"; 
var c = $("input[name='item_meta[83]']:checked").val(); 
$("#button1").on('click', function(){ 
var form = $("#test"); 
form.validate({ 
errorElement: 'span', 
errorClass: 'help-block', 
highlight: function(element, errorClass, validClass) { 
$(element).closest('.form-group').addClass ("has-error"); 
}, 
unhighlight: function(element, errorClass, validClass) { 
$(element).closest('.form-group').removeClass ("has-error"); 
}, 
rules: { 
    a: { 
     required: true, 
    }, 
    b: { 
     required: true, 
     minlength: 4, 
    }, 
}, 
massages: { 
    a: { 
     required: "Field is required", 
    }, 
    b: { 
     required: "Field is required" 
    }, 
} 
}); 

if (form.valid() == true){ 
    if(c == '2') { 
    $("#ui-id-1").addClass("ui-state-disabled"); 
    $("#ui-id-3").removeClass("ui-state-disabled"); 
    $("#accordion").accordion({ 
    active: 1 
    }); 
    } else { 
    $("#ui-id-1").addClass("ui-state-disabled"); 
    $("#ui-id-5").removeClass("ui-state-disabled"); 
    $("#accordion").accordion({ 
    active: 2 
    }); 
    } 
} 
}); 
}); 

我想不通我走到哪里错了。我已阅读每个教程,但没有看到它。谁能帮我吗?

+0

我没有看到除了一个'select'任何形式的元素。你只能验证'input','textarea'和'select'元素;你**不能**验证'div'。其次,你将规则分配给'a'和'b' ...,并且你没有'name =“a”'或'name =“b”'的'form'元素。 – Sparky

+0

此外,'.validate()'方法仅用于插件的初始化,不会进入'click'处理程序。 – Sparky

+0

嗨Sparky,有1个选择元素,也是一个输入元素()。在我的JS我做var a =“item_meta [86]”。所以我会认为这应该工作。 – Annemieke

回答

0

获取与改变JS这个工作:

jQuery(document).ready(function($) { 
$("#button1").on('click', function(){ 
var c = $("input[name='item_meta[83]']:checked").val(); 
var form = $("#test"); 
if (form.valid() == true){ 
if(c == '2') { 
    $("#ui-id-1").addClass("ui-state-disabled gereed"); 
    $("#ui-id-3").removeClass("ui-state-disabled"); 
    $("#accordion").accordion({ 
    active: 1 
    }); 
} else { 
    $("#ui-id-1").addClass("ui-state-disabled gereed"); 
    $("#ui-id-5").removeClass("ui-state-disabled"); 
    $("#accordion").accordion({ 
    active: 2 
    }); 
} 
} 
}); 
});  

jQuery(document).ready(function($) { 
var form = $("#test"); 
form.validate({ 
    rules: { 
     "item_meta[179]": { 
      required: true, 
      min: 1 
     }, 
     "item_meta[86]": { 
      required: true, 
      minlength: 4 
     } 
}, 
messages: { 
"item_meta[179]": "Required", 
"item_meta[86]": { 
     required: "Required", 
     minlength: "Minlength is 1.000" 
     } 
}, 
    highlight: function(element) { 
     $(element).closest('.form-group').addClass('has-error'); 
    }, 
    unhighlight: function(element) { 
     $(element).closest('.form-group').removeClass('has-error'); 
    }, 
    errorElement: 'span', 
    errorClass: 'help-block', 
    errorPlacement: function(error, element) { 
     if(element.parent('.input-group').length) { 
      error.insertAfter(element.parent()); 
     } else { 
      error.insertAfter(element); 
     } 
    } 
}); 
});