jquery验证和asp.net - 明确的规则?

时间:2009-09-10 16:10:40

标签: asp.net jquery validation accordion

我正在使用来自Jörn Zaefferer at bassistance

的精彩jquery .validate插件

我正在使用asp.net,所以有一个长形式,虽然表格通过jquery手风琴分为3个部分,按钮可在手风琴窗格之间切换。

我希望窗格1中的按钮验证窗格一个字段,与窗格二相同,等等。

显然在任何其他技术中,我会选择多种形式并且没有任何困难,但我不能在.net中执行此操作。

认为我需要的几乎是$('#aspnetForm').validate().unbind()或类似的东西 - 关于手风琴点击我要求重新验证表格,所以我知道我在哪个页面然后我就可以设置新的规则等。

我尝试清除规则$('#aspnetForm').validate().rules('remove'),但似乎我必须为每个字段而不是表单本身执行此操作?

我可以发布任何必要的代码示例,虽然整个脚本现在很大,所以我不得不挖出块。

希望我在逻辑意义上面 - 基本上,一种清除所有规则的方法,以便我可以创建新规则,因为我在一个不同的手风琴面板是我希望的解决方案,虽然我是挣扎。

非常感谢, 特里

2 个答案:

答案 0 :(得分:1)

当表单的任何部分显示为

时,我会尝试设置一个标志
<div id="form_section_1" class="displayed">
     ....
</div>
<div id="form_section_2">
     ....
</div>
<div id="form_section_3">
     ....
</div>

然后在验证规则中,将它们作为条件。

if($('#form_section_1').attr('class').search('displayed') != -1){
     var is_section_1_displayed = true;
}
else{ var is_section_1_displayed = false;

为每一个(可能是一种更有效的方式)做到这一点

然后在验证规则中执行类似

的操作
email: {
         required = is_section_1_displayed;
       }

假设email位于表单的第一部分。

答案 1 :(得分:1)

这确实是我在做的事情,经过一些长时间的萤火虫工作之后,似乎其中一个选择器没有被清除,所以错误的规则被加载了。

现在他们已经解决了,每次调用.validate都有自己的一套规则,并且点击(比如说).click事件,它们似乎不是附加的,所以带有3条规则的page1.validate清除所有page2 .validate rules。

感谢您输入idrumgood,标记您的答案,感谢任何输入。

干杯, 特里