jQuery Validate - 验证只读字段

时间:2015-03-11 15:11:10

标签: jquery jquery-validate

我的表单上有3个字段:A,B和& C.C是只读字段,其值来自A&的总和。 B.如何在字段C上运行jQuery Validate以确保在提交表单时其值大于0?

现在,如果我在字段C上设置验证,它就不起作用。如果我从字段中删除只读属性,则运行验证,但我不希望用户更改该字段中的值。

有什么想法吗?

3 个答案:

答案 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?