为什么我的验证没有出现?

时间:2011-11-23 21:23:45

标签: jquery asp.net-mvc asp.net-mvc-3 jquery-validate

我正在使用Asp.Net MVC 3,我在生命周期的后期通过jquery使用[此代码] [1]通过jquery.validate添加验证器:

感谢redsquare的回答,我添加了一个这样的方法:

$.validator.addMethod(
        "regex",
        function(value, element, regexp) {
            var check = false;
            var re = new RegExp(regexp);
            return this.optional(element) || re.test(value);
        },
        "Please check your input."
);

现在您需要做的就是对任何正则表达式进行验证是这样的:

$("Textbox").rules("add", { regex: "^[a-zA-Z'.\s]{1,40}$" })

验证工作正常,但实际的消息没有出现在任何地方......我做错了什么?谢谢。

4 个答案:

答案 0 :(得分:3)

我有同样的问题。从来没有找到导致问题的原因,我最终通过将验证属性分配给输入字段来使用MVC不显眼的验证:

所以假设你有一个#Textbox输入:

<input class="text-box" id="Textbox" name="Textbox" type="text" value="">

打开验证的简单方法就是分配data-val- *属性:

$(document).ready(function(){
   $('#Textbox').attr('data-val','true'); // turn on validation
   $('#Textbox').attr('data-val-regex','The input does not match the validation pattern'); // message to show when validation fails
   $('#Textbox').attr('data-val-regex-pattern',"@^[a-zA-Z&#39;.\s]{1,40}$"); //regex
});

这是他在我的网站上这样做的方式,它的工作原理。你调用验证的方式可能会与微软实现jQuery验证器的方式发生冲突,但我无法找到它的位置

答案 1 :(得分:1)

您是否将它与mvc元模型一起使用?如果是这样,请确保您有

@Html.ValidationMessageFor(m => m.obj)

就在您的文本框旁边

希望这就是你的意思:)。

答案 2 :(得分:0)

好吧,假设您的表单选择器和验证功能设置正确,它应该正常工作,这可能是一个问题吗?发布剩余的验证将非常有用。

答案 3 :(得分:0)

您是否在动态添加的元素上添加验证器?如果是这样,我想你可以在这里找到答案:jquery.validate.unobtrusive not working with dynamic injected elements