我想根据用户在文本框中输入的邮政编码填充城市/州下拉列表。因此,当文本发生变化时,我将进行ajax调用以检索数据。但是,我只想执行有效邮政编码的ajax请求。该字段已使用DataAnnotations.RegularExpression属性和jquery.validate.unobtrusive验证库进行验证。在使用不引人注目的时候,我不清楚jquery.validate可以和不能使用什么。我看过这个不引人注目的代码,但还没有对它有所了解。所以有两个问题:
使用javascript,
答案 0 :(得分:8)
在挖掘源代码后,我得出了这些结论。首先,不引人注目的目的是将规则和消息(由MVC定义为表单元素上的数据属性)连接到jQuery.validation。它用于配置/连接验证,而不是完整的包装,所以当执行已经设置的验证时,您不必担心"规避" ,或不涉及,不引人注目。
所以回答问题:
是的,有两种方法。 Validator.element(element)
函数和$.valid()
扩展方法。 $.valid
实际上在内部调用了Validator.element
。差异是$.valid
适用于jQuery,它允许您在一个或多个字段(或表单本身)上执行验证。 Validator.element仅对单个元素执行验证,并要求您具有验证器对象的实例。虽然文档声明.validate()"验证了所选的表单",但它实际上似乎初始化表单的验证,如果它已被调用,它只是返回表单的验证器。以下是验证输入的两种方法的示例(#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>
答案 1 :(得分:5)
您可以找到单个字段是否有效并以这种方式触发此验证:
$("#myform").validate().element("#elem1");
详情请http://docs.jquery.com/Plugins/Validation/Validator/element#element
答案 2 :(得分:-2)
Use like this:
$('#Create').on('click', function () {
var form = $('#test').closest('form');
$(form).validate();
if (!$(form).valid()) {
return
} else {
// Bide the data
}
});
希望它适合你