Проверка jQuery: по крайней мере, один из нескольких числовых входов должен быть выше 0

#jquery #validation

#jquery #проверка

Вопрос:

У меня есть форма с тремя входными данными, рассчитанными на Javascript, которые по умолчанию равны 0.

Для проверки формы, по крайней мере, одно из полей должно иметь значение выше 0.

Как я могу сделать это успешно? Я уже знаю о методе проверки ‘require_from_group’, чтобы убедиться, что одно из нескольких полей заполнено, но есть ли что-то подобное для проверки значения этих полей?

JS:

     $('#registerForm').validate({
     rules: {
      gramsTOT: {
       require_from_group: [1, '.notZero']
      },
      unitsTOT: {
       require_from_group: [1, '.notZero']
      },
      eurcalcTOT: {
       require_from_group: [1, '.notZero']
      }
     }, // end rules
    }); // end validate
  

HTML:

     <input type='number' lang='nb' class='specialInput first notZero' id='gramsTOT' name='gramsTOT' value="0" readonly /><br />
    <input type='number' lang='nb' class='specialInput first notZero' id='unitsTOT' name='unitsTOT' value="0" readonly /><br />
    <input type='number' lang='nb' class='specialInput notZero' id='eurcalcTOT' name='eurcalcTOT' value="0" readonly />
  

Ответ №1:

Вы можете использовать jQuery.validator.addMethod для создания пользовательского правила проверки, в вашем случае это будет

     jQuery.validator.addMethod("greater_than_number", function(value, element, options) {
  var val = $(options[1], element.form).filter(function() {

    return $(this).val();

  }).val(); 
  console.log(val);
  var valid = parseFloat(val) > parseFloat(options[0]) ;
  console.log(valid);
  return valid;
}, jQuery.validator.format('one of these must bigger than {0}'));



$('#myform').validate({
  rules: {
    gramsTOT: {
      require_from_group: [1, '.notZero'],
      greater_than_number: [0, '.notZero']
    },
    unitsTOT: {
      require_from_group: [1, '.notZero'],
      greater_than_number: [0, '.notZero']
    },
    eurcalcTOT: {
      require_from_group: [1, '.notZero'],
      greater_than_number: [0, '.notZero']
    }
  }, // end rules
}); // end validate
  

Смотрите демонстрацию здесь

Комментарии:

1. Работает как шарм! Большое спасибо! Теперь перейдем к сложной части, анализу и пониманию вашего кода … 🙂