Пожалуйста, введите значение между проверкой диапазона NaN и NaN

#html #jquery #validation #magento #magento2

#HTML #jquery #проверка #magento #magento2

Вопрос:

У меня есть ползунок диапазона с кодом ниже

 <div class="slidecontainer">
      <input name="am_giftcard_amount_slider" id="am_giftcard_amount_slider" type="range" min="0" value="13" max="27" step="1" class="gg-slider validate-range range-0-27">
</div>
  

Теперь я получаю эту ошибку

 `Please enter a value between NaN and NaN`
  

Теперь я попытался отладить это и пошел, чтобы изменить файл в lib/web/mage/validation.js now под функцией validate-range , я добавил жесткое значение True, просто чтобы выполнить отладку и узнать, является ли ответ true, если сообщение об ошибке все еще появляется. Но после добавления return true сообщение об ошибке все еще отображается. Я смотрю на эту ошибку

 'validate-range': [
        function (v, elm) {
            
            var minValue, maxValue, ranges, reRange, result, values,
                i, name, validRange, minValidRange, maxValidRange;
            
            if ($.mage.isEmptyNoTrim(v)) {
                return true;
            } else if ($.validator.methods['validate-digits'] amp;amp; $.validator.methods['validate-digits'](v)) {

                minValue = maxValue = $.mage.parseNumber(v);
            } else {
                ranges = /^(-?d )?-(-?d )?$/.exec(v);
                if (ranges) {
                    minValue = $.mage.parseNumber(ranges[1]);
                    maxValue = $.mage.parseNumber(ranges[2]);

                    if (minValue > maxValue) { //eslint-disable-line max-depth
                        return false;
                    }
                } else {
                    return false;
                }
            }
            reRange = /^range-(-?d )?-(-?d )?$/;
            result = true;
            values = $(elm).prop('class').split(' ');
            for (i = values.length - 1; i >= 0; i--) {
                name = values[i];
                validRange = reRange.exec(name);
                if (validRange) {
                    minValidRange = $.mage.parseNumber(validRange[1]);
                    maxValidRange = $.mage.parseNumber(validRange[2]);
                    result = result amp;amp;
                        (isNaN(minValidRange) || minValue >= minValidRange) amp;amp;
                        (isNaN(maxValidRange) || maxValue <= maxValidRange);

                }
            }
            return result;
        },
        $.mage.__('The value is not within the specified range.')
    ],
  

Не уверен, почему, несмотря на то, что я добавил возвращаемое значение true, проверка ошибки все еще отображается. Может кто-нибудь сказать мне, где я могу отлаживать и как это отключить? Я в основном не знаю, где искать, потому что я уже изменил js, но он все еще выдает эту ошибку. Любая идея о том, как это отладить, пожалуйста, и есть ли какие-либо ошибки в моем коде?

Примечание: я не изменял и не добавлял никакой инициализации слайдера jQuery, я просто добавил разметку HTML для слайдера

Обновить:

Я попробовал этот код

 <div class="slidecontainer">
      <input name="am_giftcard_amount_slider" id="am_giftcard_amount_slider" type="range" min="0" digits="true" value="13" max="27" range="2,17" step="1" class="gg-slider ignore">
</div>
  

После того, как я разместил range="2,17" , я получил эту ошибку

 `Please enter a value between 2 and NaN`
  

Я знаю, что я поставил 2 вместо 0 для минимума. Я намеренно сделал это так, чтобы я знал, действительно ли он извлекает правильный параметр. Теперь на основе этого. Он смог получить 2 минимальное значение, но почему максимальное 17 значение не считывается?

Ответ №1:

Кажется, что сообщение Please enter a value between NaN and NaN от системы проверки jquery, а не от magento, потому что magento возвращает только это сообщение: «Значение не находится в указанном диапазоне»..

Вы должны рассмотреть возможность использования validate-digits-range digits-range-2-17 классов и, которые являются правилом проверки magento.

Ответ №2:

Для тех, кто еще получает Please enter a value between NaN and NaN range validation ошибку при проверке Jquery, вам необходимо правильно настроить функцию проверки для правила проверки ввода диапазона перед проверкой.

В моем случае:

 $("#form").validate({
    rules: {
        rangeInputId: {
            range: [3, 10]
        }
    },
});