min值的规则不适用于jquery validate

时间:2016-03-06 23:29:51

标签: jquery ruby-on-rails-4 jquery-validate

我有这个验证代码,当我将文本放在数字字段中时看起来工作正常,但是当我将值设置为低于1时,在规则中将其设置为min,即使它应该也没有消息

jQuery(function() {
    $('#payment_amount').validate({
        lang: 'sk',
        rules: {
          "payment[amount]": {
            required: true,
            min: 1,
            max: 9999999 
          }
        },
        highlight: function(element) {
          $(element).parent().addClass('state-error');
        },
        unhighlight: function(element) {
          $(element).parent().removeClass('state-error');
        }
      });
    });

当我在输入类型编号的不同页面上使用相同的代码时,检查最小值是否有效

这是我创建输入字段的方式

<%= f.number_field :amount, :style=>"-moz-appearance:textfield;", :required=> true %>

这是html

<input type="number" id="payment_amount" name="payment[amount]" required="required" style="-moz-appearance:textfield;" aria-required="true" novalidate="novalidate" aria-invalid="false">
我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案 不知道为什么,但即使标准验证正在#element上工作,min值只有在我使用form作为元素时才有效,而不是#input field

$('form').validate({
    lang: 'sk',
    rules: {
      'payment[amount]': {
        min: 1
      }
    },
    highlight: function(element) {
      $(element).parent().addClass('state-error');
    },
    unhighlight: function(element) {
      $(element).parent().removeClass('state-error');
    }
  });

答案 1 :(得分:0)

您已使用.validate() ...

id="payment_amount"方法附加到输入字段
$('#payment_amount').validate({
    lang: 'sk',
    rules: {
      "payment[amount]": {
      ...

但是,您应该将.validate()方法附加到form元素,以初始化表单上的插件;这就是为什么在name对象中指定了每个字段rules

$('#my_form_id').validate({ // <- attach to the form; these are the options for this form
    lang: 'sk',
    rules: {
      "payment[amount]": { // <- the field name is specified here
      ...