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

标签 javascript jquery asp.net-mvc validation asp.net-mvc-5

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

使用javascript,

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

最佳答案

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

所以回答问题:

  1. 是的,有两种方法。 Validator.element(element)函数和 $.fn.valid()扩展方法。 .valid 实际上在内部调用了 Validator.element。不同之处在于 .valid 适用于 jQuery,它允许您对一个或多个字段(或表单本身)执行验证。 Validator.element 仅对单个元素执行验证,并要求您拥有验证器对象的实例。尽管文档声明 .validate() “验证所选表单”,但它实际上似乎是初始化表单的验证,如果它已经被调用,它只是返回表单的验证器。因此,这里是验证输入的两种方法的示例(在 #2 下方)。

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

示例:

<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>

关于javascript - MVC 5 - 在客户端验证特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946123/

相关文章:

javascript - 在子对象中创建对父对象的引用会导致循环关系吗?

javascript - 给定一个 JSON 对象,如何根据键查找项目?

jquery - 使用 bootstrap 将文本重叠在图像上

asp.net-mvc - asp.net mvc 中的安全问题是什么?

asp.net-mvc - 没有给出对应于 'key' 的必需形式参数 'IOwinContext.Get<T>(string)' 的参数

javascript - 如何在 Angular 上使用 formatDate 格式化日期

javascript - 通过 Javascript 更改 HTML 页面的颜色

javascript - 使用 $.each jquery 在 ajax 成功中创建 html 选择选项

asp.net - 如何更改剑道 numericTextBox 的文化

javascript - 原型(prototype)js库初学者