jQuery Validation `valid()` 方法在 required 不为真时返回 0

Posted

技术标签:

【中文标题】jQuery Validation `valid()` 方法在 required 不为真时返回 0【英文标题】:The jQuery Validation `valid()` method returns 0 when required is not true 【发布时间】:2010-10-03 16:35:50 【问题描述】:

我正在使用jQuery Validation plugin,并且我有一个带有digits 类的文本框来强制它只是数字,但不是必需的。当我在表单上调用 validate 时它工作正常,但是如果我在文本框为空时调用 valid(),它会返回 0,尽管没有显示错误消息并且不需要设置。

有谁知道为什么它会为看似有效的输入值返回这个?

代码如下:

<input type="text" value="" name="kiloMetresTravelled" id="kiloMetresTravelled" class="digits"/>

和脚本

<script type="text/javascript'>
 var isvalid = jQuery('#kiloMetresTravelled').valid(); 
 //isvalid == 0 when kiloMetresTravelled is blank
</script>

【问题讨论】:

哎呀,读错了问题。 :) 【参考方案1】:

检查这个,来自documentation:

使“字段”为必填项和数字 仅限。

你可以这样做:

var isValid = jQuery('#kiloMetresTravelled').valid() || jQuery('#kiloMetresTravelled').val() == "";

【讨论】:

它不是只说'使元素只需要数字'。他们还添加了“必需”规则 该示例将所需的规则添加到组合中:此答案具有误导性。实际发生的情况是,由于该字段没有必需的规则,因此内部“检查”方法返回未定义的字段。为什么会这样对我来说是个谜。请注意,上面的代码有效,但 (a) 原因是错误的,并且 (b) 它仅适用于被测的单个元素。【参考方案2】:

我认为这可行:

var e="#whatever";
var isValid = $(e).valid() || $(e).val()== "" && !$(e).hasClass('required');

【讨论】:

【参考方案3】:

当规则方法使用“this.optional(element)”检查可选字段时,库中有一个错误。当字段为空时,this.optional 返回“dependency-mismatch”,验证方法返回“undefined”,将字段标记为无效。

这里有完整的解释:

https://github.com/jzaefferer/jquery-validation/issues/481

【讨论】:

以上是关于jQuery Validation `valid()` 方法在 required 不为真时返回 0的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot @Validation @Valid

jquery中的表单验证if($.sValid())是否写错了?$.valid()这样写表单木有反应,改肿么写?

当表单无效时,Angular Validation 呈现 ng-valid

Jquery Validate 默认校验规则及常用的自定义验证规则

javax的@Valid注解使用场景

hibernate自定义校验Valid