Я использую noUISlider на плагине facetwp в WordPress, и я сделал некоторые настройки, чтобы заставить его работать с входами (я даже не думаю, что это проблема WordPress, поэтому я публикую это здесь)
Все работает отличноно только в первый раз, когда я пытаюсь изменить значение ползунка с помощью ввода, во второй раз все переключается на «0», поэтому оба поля ввода ведут себя так, и ничего не фильтруется, что очевидно, потому что значение равно 0 как в мин. и макс.
$(document).on('facetwp-loaded', function() {
var updateFWP = function(facet_name) {
FWP.frozen_facets[facet_name] = 'hard';
FWP.autoload();
};
var onChangeEvent = function(handle, t) {
var parent = $(t).closest('.facetwp-type-slider');
var slider = parent.find('.facetwp-slider');
slider[0].noUiSlider.setHandle(handle, t.value);
updateFWP(parent.attr('data-name'));
}
$('.facetwp-type-slider .facetwp-slider:not(.ready)').each(function() {
var $parent = $(this).closest('.facetwp-facet');
var facet_name = $parent.attr('data-name');
var opts = FWP.settings[facet_name];
// on first load, check for slider URL variable
if (false !== FWP.helper.get_url_var(facet_name)) {
FWP.frozen_facets[facet_name] = 'hard';
}
// fail on slider already initialized
if ('undefined' !== typeof $(this).data('options')) {
return;
}
// fail if start values are null
if (null === FWP.settings[facet_name].start[0]) {
return;
}
// fail on invalid ranges
if (parseFloat(opts.range.min) >= parseFloat(opts.range.max)) {
FWP.settings[facet_name]['lower'] = opts.range.min;
FWP.settings[facet_name]['upper'] = opts.range.max;
FWP.hooks.doAction('facetwp/set_label/slider', $parent);
return;
}
var inputMin = $(this).find('.slider-input-min');
var inputMax = $(this).find('.slider-input-max');
// custom slider options
var slider_opts = FWP.hooks.applyFilters('facetwp/set_options/slider', {
range: opts.range,
start: opts.start,
//step: parseFloat(opts.step),
connect: true
}, { 'facet_name': facet_name });
var slider = this;
noUiSlider.create(slider, slider_opts);
slider.noUiSlider.on('update', function(values, handle) {
var value = values[handle];
if (handle) {
inputMax.val(value);
} else {
inputMin.val(value);
}
FWP.settings[facet_name]['lower'] = values[0];
FWP.settings[facet_name]['upper'] = values[1];
FWP.hooks.doAction('facetwp/set_label/slider', $parent);
});
slider.noUiSlider.on('set', function() {
updateFWP(facet_name);
});
$(this).addClass('ready');
});
$('.slider-input-min').on('change', function () {
onChangeEvent(0, this);
});
$('.slider-input-max').on('change', function () {
onChangeEvent(1, this);
});
});
Так что в основном все работает хорошо, когда я использую «ползунок», но не с входами ... Я пытался много вещей, но понятия не имею, почему это не работает.
Может быть, у кого-то из вас была похожая проблема с проблемой facetwp + nouislider?
спасибо!