【问题标题】:Please enter a value between NaN and NaN range validation请输入一个介于 NaN 和 NaN 范围验证之间的值
【发布时间】:2021-01-27 01:57:26
【问题描述】:

我有一个范围滑块,下面有代码

<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 中的文件现在在函数 validate-range 下我添加了一个硬编码值 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'] && $.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 &&
                        (isNaN(minValidRange) || minValue >= minValidRange) &&
                        (isNaN(maxValidRange) || maxValue <= maxValidRange);

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

不知道为什么即使我添加了 return true 错误验证仍然显示。谁能告诉我在哪里可以调试以及如何关闭它?我现在基本上不知道在哪里寻找,因为我已经修改了 js,但它仍然抛出这个错误。请问有什么办法可以调试,我的代码有什么错误吗?

注意:我没有修改或添加任何 JQuery Slider 初始化我只是添加了滑块的 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?

【问题讨论】:

    标签: html jquery validation magento magento2


    【解决方案1】:

    消息Please enter a value between NaN and NaN 似乎来自 jquery 验证系统而不是 magento 之一,因为 magento 只返回此消息:“值不在指定范围内。”。

    您应该考虑使用 validate-digits-range 和 digits-range-2-17 类,这是一个 magento 验证规则。

    【讨论】:

      【解决方案2】:

      对于从 Jquery Validation 获得 Please enter a value between NaN and NaN range validation 错误的任何其他人,您需要在验证之前为范围输入验证规则正确设置 validate 函数。

      就我而言:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-06
        • 2013-06-24
        • 2016-09-24
        • 2021-12-16
        • 1970-01-01
        相关资源
        最近更新 更多