
[英]jquery validate plugin - validate only if one of the field is not blank
[英]jQuery Validate - Validate read only field
我的表单上有3个字段:A,B和C。C是一个只读字段,其值是从A和B的总和得出的。如何使jQuery Validate在字段C上运行以确保其值更大提交表单时大于0?
现在,如果我在字段C上设置验证,那么它将不起作用。 如果我从该字段中删除了只读属性,则会运行验证,但我不希望用户更改该字段中的值。
有任何想法吗?
该代码需要根据您字段的ID进行调整,但只有ID =“ C”中的值大于0时,它几乎可以提交表单。
$('form').submit(function() {
if($('#C').val() === 0) {
e.preventDefault();
//send some notification
}
});
min
规则设置为0
将确保字段大于或等于零。 您还可以使用.addMethod()
编写自定义规则,以确保该规则不能等于零。
$.validator.addMethod("greaterThan", function( value, element, param ) {
return this.optional( element ) || value > param;
}, "The value must be greater than {0}")
$('#myform').validate({
rules: {
myField: {
greatherThan: [0]
}
}
});
{0}
不代表消息中的0
字符。 它代表第一个参数值的占位符 。 因此,如果参数设置为0,则占位符将自动将参数值插入您的自定义消息中。
但是,此插件无法验证readonly
字段。 当您考虑它时,验证用户无法直接控制的内容毫无意义。
作为开发人员,您可以通过编程方式控制后端数据,因此请首先确保其有效。 换句话说,如果两个字段的总和必须始终大于零,那么您将编写一个自定义方法来查看这两个字段,以确保它们的总和始终大于零。 然后,当用户收到验证错误时,仅在用户可以输入其数据的字段上。
否则,您将不得不采取某种变通方法,以编程方式将结果复制到一个隐藏字段中,然后对这个隐藏的输入执行验证。 将ignore
选项设置为[]
,以忽略所有内容。 否则,插件也将忽略隐藏的输入字段。
您可以在focusin上添加readonly属性,然后在focusout上将其删除,如下所示: 如何在只读字段上启用jquery验证?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.