我的表单上有3个字段:A,B和& C.C是只读字段,其值来自A&的总和。 B.如何在字段C上运行jQuery Validate以确保在提交表单时其值大于0?
现在,如果我在字段C上设置验证,它就不起作用。如果我从字段中删除只读属性,则运行验证,但我不希望用户更改该字段中的值。
有什么想法吗?
答案 0 :(得分:0)
此代码需要根据您的ID字段进行调整,但只有在ID =“C”的值大于0时才提交表单。
$('form').submit(function() {
if($('#C').val() === 0) {
e.preventDefault();
//send some notification
}
});
答案 1 :(得分:0)
设置为min
的{{1}}规则将确保字段大于或等于零。您还可以write a custom rule using .addMethod()
确保它不能等于零。
0
$.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
,以便忽略任何内容。否则,插件也会忽略隐藏的输入字段。
答案 2 :(得分:-1)
您可以在focusin上添加readonly属性,然后在focusout上删除它 如上所述: How can I enable jquery validation on readonly fields?