MVC3条件JQuery验证

时间:2011-10-28 16:28:30

标签: jquery asp.net-mvc-3 unobtrusive-validation

我正在尝试使用jQuery验证器进行一些条件验证。

我有一个javascript向导,在转到下一步时调用validate方法:

var validator = $("form").validate();
var anyError = false;

step.find("input").each(function () {
    if (!validator.element(this)) {
        // validate every input
        anyError = true;
    }
});

if (anyError) {
    return false;
}

当我在模型上有[Required]属性时,一切正常。

但是我有这种情况:

  • 我选择了一个下拉菜单:Email或Ftp
  • 选择电子邮件选项后,我想显示电子邮件地址字段并添加验证
  • 选择Ftp选项后,我不想验证电子邮件地址

这是电子邮件地址的html代码段。

<div class="email-address" style="display: none;">
   <label class="fullwidth" for="EmailAddress">Email Address</label>
   @Html.TextBoxFor(m => m.EmailAddress, new { @class = "longtext" })
   <div id="email-validation">
   </div>

我尝试了各种各样但下一个按钮验证例程始终认为表单有效。例如。

$("form").validate({
    errorLabelContainer: '#email-validation',
    rules: {
        EmailAddress: {
           required: true
        }
    },
    messages: {
        EmailAddress: "Please enter an email address"
    }
});

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:0)

我不确定,但我很确定你不能将标准的jquery验证与MVC3客户端验证结合使用。你必须做其中一个。

更具体地说,MCV3客户端验证会根据自己的用途调整jquery验证,这与单独使用jquery-validation相冲突。

答案 1 :(得分:0)

我会使用disabled输入不参与验证的事实。添加服务器端所需,但只在选择ftp时禁用和隐藏EmailAddress。