这是我的场景,我有3个手风琴布局。每个手风琴包含1种形式。像那样
<div id="collapseOne">
@using(Html.BeginForm("","",FormMethod.Post,new{id="formOne"}))
{
@Html.TextBoxFor(m=>m.Name)
@Html.ValidationMessageFor(m=>m.Name)
@Html.TextBoxFor(m=>m.City)
@Html.ValidationMessageFor(m=>m.City)
<input type="button" value="Next" id="btnOne" />
}
</div>
<div id="collapseTwo">
@using(Html.BeginForm("","",FormMethod.Post,new{id="formTwo"}))
{
@Html.TextBoxFor(m=>m.Age)
@Html.ValidationMessageFor(m=>m.Age)
@Html.TextBoxFor(m=>m.Address)
@Html.ValidationMessageFor(m=>m.Address)
<input type="button" value="Next" id="btnTwo" />
}
</div>
<div id="collapseThree">
@using(Html.BeginForm("MyAction","MyController",FormMethod.Post,new{id="formThree"}))
{
@Html.TextBoxFor(m=>m.Email)
@Html.ValidationMessageFor(m=>m.Email)
@Html.TextBoxFor(m=>m.City)
@Html.ValidationMessageFor(m=>m.Email)
<input type="submit" value="Finish" id="btnThree" />
}
</div>
现在,当我按上述手风琴中的Next Next时,验证检查效果很好。
但是,当有人直接来到第三手风琴并尝试按完成时,则仅验证第三手风琴。
这是我的jQuery
function PageEvents(){
$("#btnThree").click(function(event){
event.preventDefault();
if($("#formOne").valid()==false){
// Open first Accordion
}
else if($("#formTwo").valid()==false){
//Open second Accodion
}
else{
if($("#formThree").valid()){
$("#formThree").submit();
}
}
});
$("#btnOne").click(function (event) {
event.preventDefault();
if ($("#formOne").valid()) {
//trigger accordion two
$("collapseTwo").trigger("click");
}
});
$("#btnTwo").click(function (event) {
event.preventDefault();
if ($("#formTwo").valid()) {
//trigger accordion two
$("collapseThree").trigger("click");
}
});
如果您需要更多说明,我会提供。
请指导我如何验证那些尚未打开的表格,用户直接进入第三手风琴,然后按完成按钮...
谢谢
最佳答案
您对validatin隐藏字段有问题,默认情况下,jquery验证不验证隐藏字段,您可以更改默认值:
$.validator.setDefaults({
ignore: []
});
您还可以购买麻烦的标签,这是不允许的here是示例。
但是最好的方法是使用像this这样的miltistep向导。