ASP.NET MVC2 RC:如何在ajax请求之前拦截或触发客户端验证?

时间:2010-02-03 13:54:59

标签: asp.net asp.net-mvc-2

我在表单上有一个用户名文本框,它通过DataAnnotation属性应用了一些验证规则:

[Required(ErrorMessage = "FTP login is required")]
[StringLength(15, ErrorMessage = "Must be 15 characters or fewer")]
[RegularExpression(@"[a-zA-Z0-9]*", ErrorMessage = "Alpha-numeric characters only")]
public string FtpLogin { get; set; }

我在这个文本框旁边还有一个按钮,它会触发一个jQuery ajax请求,检查是否存在用户名,如下所示:

<button onclick="check(this);return false;" id="FtpLoginCheck" name="FtpLoginCheck">Available?</button>

我正在寻找一种将两者结合在一起的方法,以便在onclick事件中调用“check(this)”之前执行客户端验证。

编辑:为了更清楚,我需要一种方法来检查或触发文本框的客户端验证结果,当我点击它旁边的无关按钮时。

编辑:我现在有按钮JS检查$(“form”)。validate()。无效,但不显示通常的验证消息。几乎就是

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

好的,我的解决方案是在按钮onclick事件期间手动触发客户端验证:

        var validator =  $("form").validate({
            submitHandler: function(form) { /* do nothing */ }
        });
        if (validator.errorList.length > 0) return;

答案 1 :(得分:0)

怎么样:

$(function() {
    $("#FtpLoginCheck").live("click", function(e){ 
          e.preventDefault();
          var $this = $(this);
          check($this);
    }
});

这将在asp.net MVC2进行客户端验证后触发。