我有一个范围滑块,其代码低于
<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`
现在我尝试调试它,并在函数validate-range
下修改lib/web/mage/validation.js
中的文件。我添加了一个硬编码值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'] && $.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.')
],
不知道为什么即使我添加了返回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
?
消息Please enter a value between NaN and NaN
似乎来自jquery验证系统,而不是magento,因为magento只返回此消息:">该值不在指定的范围内";。
您应该考虑使用validate-digits-range
和digits-range-2-17
类,这是一个magento验证规则。
对于其他从Jquery Validation中得到Please enter a value between NaN and NaN range validation
错误的人,您需要在验证之前正确设置范围输入验证规则的验证函数。
就我而言:
$("#form").validate({
rules: {
rangeInputId: {
range: [3, 10]
}
},
});