Как отключить пользовательский метод проверки при условии

StackOverflow https://stackoverflow.com/questions/800983

  •  03-07-2019
  •  | 
  •  

Вопрос

Я использую jQuery Плагин проверки чтобы убедиться, что пользователь ввел положительный результат стоимость_автомобиля в первом текстовом поле и положительном к оплате во втором текстовом поле, например, *cost_of_car * 0,4 <= Payment_amount <= Cost_of_car*:

$.validator.addMethod("testMaxAmount", function()
{
    return $("#cost_of_car").val() - 0 >= $("#payment_amount").val() - 0;
}, "Can't be more than cost_of_car");

$.validator.addMethod("testMinAmount", function()
{
    return $("#cost_of_car").val() * 0.4 <= $("#payment_amount").val() - 0;
}, "Can't be less than cost_of_car * 0.4");

$("#calc_form").validate(
{
    rules: 
    {
        cost_of_car: 
        {
            required: true,
            number: true,
            min: 1,
            max: 10000000
        },
        payment_amount: 
        {
            required: true,
            number: true,
            testMaxAmount: true,
            testMinAmount: true 
        }
    }
});

Теперь я хочу пропустить проверки testMaxAmount и testMinAmount до тех пор, пока стоимость_автомобиля действует.Тестирование

$("#calc_form").validate().element("#cost_of_car")

или даже

$("#calc_form").validate({ignore: "#payment_amount"}).element("#cost_of_car")

внутри этих методов приводит к рекурсии и зависанию браузера.

Не могли бы вы предложить какой-нибудь другой метод отключения проверки к оплате до стоимость_автомобиля действителен, пожалуйста?

Это было полезно?

Решение

ОБНОВЛЯТЬ: Изменение должно быть в validator.addMethod() звонки:

$.validator.addMethod("testMaxAmount", function()
{
    if($("#cost_of_car").valid())
      return $("#cost_of_car").val() - 0 >= $("#payment_amount").val() - 0;
    else
      return true;
}, "Can't be more than cost_of_car");

$.validator.addMethod("testMinAmount", function()
{
    if($("#cost_of_car").valid())
      return $("#cost_of_car").val() * 0.4 <= $("#payment_amount").val() - 0;
    else
      return true;
}, "Can't be less than cost_of_car * 0.4");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top