#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]
}
},
});