MVC 5 - 验证客户端的特定字段

xr2*_*0xr 5 javascript validation asp.net-mvc jquery asp.net-mvc-5

我想根据用户在文本框中键入的邮政编码填充城市/州下拉列表.因此,当文本发生变化时,我将进行ajax调用以检索数据.但是,我只想执行有效邮政编码的ajax请求.该字段已使用DataAnnotations.RegularExpression属性和jquery.validate.unobtrusive验证库进行验证.在使用不引人注目的时候,我不清楚jquery.validate可以和不能使用什么.我看过这个不引人注目的代码,但还没有对它有所了解.所以有两个问题:

使用javascript,

  1. 有没有办法强制对特定字段进行验证,而不是整个表单?
  2. 有没有办法检查特定字段是否有效?

xr2*_*0xr 8

在深入研究源代码后,我得出了这些结论.首先,不引人注目的目的是将规则和消息(由MVC定义为表单元素上的数据属性)连接到jQuery.validation.它是用于配置/连接验证,而不是围绕它的完整包装器,因此当执行已经设置的验证时,您不必担心"规避"或不涉及,不引人注目.

所以回答问题:

  1. 是的,有两种方法.的Validator.element(element)功能和$.fn.valid()扩展方法..valid实际上是Validator.element内部调用 区别在于.validjQuery,它允许您在一个或多个字段(或表单本身)上执行验证.Validator.element仅对单个元素执行验证,并要求您具有验证器对象的实例.尽管文档说明.validate()"验证了所选表单",但它实际上似乎初始化了表单的验证,如果已经调用它,它只是返回表单的验证器.以下是验证输入的两种方法的示例(#2下方).

  2. 是的,但并非没有执行验证.#1中的两个方法都返回一个布尔值,因此您可以使用它们来确定字段是否有效.遗憾的是,库似乎没有任何可以让您检查验证但实际上没有显示或隐藏验证消息的内容.您必须从代码中获取并运行该字段的规则,这可能是可能的,但我的需要并不能证明花时间在它上面.

例:

<form>
    <input id="txtDemo" type="text"></input>
</form>
...    
<script type="text/javascript">
    $("#txtDemo").valid();

    //or

    //Get the form however it makes sense (probably not like this)
    var validator = $("form").validate();

    //Note: while .element can accept a selector, 
    //it will only work on the first item matching the selector.
    validator.element("#txtDemo");
</script>
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以找到单个字段是否有效并以这种方式触发此验证: $("#myform").validate().element("#elem1");

详情请访问http://docs.jquery.com/Plugins/Validation/Validator/element#element