Дополнительные фильтры

Доброго всем дня!
Вновь столкнулся с проблемой.
для вывода фильтра цены использую стандартные чанки
&tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
&tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
Но появилась необходимость добавить radiobox со значениями типа «Не имеет значения» до 10000, до 20000 и т.д.
Решил я что дело то 2-х минут и засунул в чанк
&tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
следующий код, прям под плейсхолдер [[+rows]]
<label for="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" class="[[+disabled]]">
	<input type="radio" name="[[+table]][[+delimeter]][[+filter]]" id="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" value="" [[+checked]] [[+disabled]]/> Не имеет значения <sup>[[+num]]</sup>
</label>
	
<label for="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" class="[[+disabled]]">
	<input type="radio" name="[[+table]][[+delimeter]][[+filter]]" id="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" value="[[+value:default=`10000`]]" [[+checked]] [[+disabled]]/> до 10 000 <sup>[[+num]]</sup>
</label>
	
<label for="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" class="[[+disabled]]">
	<input type="radio" name="[[+table]][[+delimeter]][[+filter]]" id="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" value="[[+value:default=`20000`]]" [[+checked]] [[+disabled]]/> до 20 000 <sup>[[+num]]</sup>
</label>
то есть сейчас чанк выглядит у меня вот так

<fieldset id="mse2_[[+table]][[+delimeter]][[+filter]]">
	<h4>[[%mse2_filter_[[+table]]_[[+filter]]]]</h4>
	<div class="mse2_number_slider"></div>
	<div class="mse2_number_inputs">
		[[+rows]]


		<label for="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" class="[[+disabled]]">
			<input type="radio" name="[[+table]][[+delimeter]][[+filter]]" id="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" value="" [[+checked]] [[+disabled]]/> Не имеет значения <sup>[[+num]]</sup>
		</label>
		
		<label for="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" class="[[+disabled]]">
			<input type="radio" name="[[+table]][[+delimeter]][[+filter]]" id="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" value="[[+value:default=`10000`]]" [[+checked]] [[+disabled]]/> до 10 000 <sup>[[+num]]</sup>
		</label>
		
		<label for="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" class="[[+disabled]]">
			<input type="radio" name="[[+table]][[+delimeter]][[+filter]]" id="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" value="[[+value:default=`20000`]]" [[+checked]] [[+disabled]]/> до 20 000 <sup>[[+num]]</sup>
		</label>
		
		<label for="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" class="[[+disabled]]">
			<input type="radio" name="[[+table]][[+delimeter]][[+filter]]" id="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" value="[[+value:default=`30000`]]" [[+checked]] [[+disabled]]/> до 30 000 <sup>[[+num]]</sup>
		</label>
		
		<label for="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" class="[[+disabled]]">
			<input type="radio" name="[[+table]][[+delimeter]][[+filter]]" id="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" value="[[+value:default=`40000`]]" [[+checked]] [[+disabled]]/> до 40 000 <sup>[[+num]]</sup>
		</label>
		

	</div>
</fieldset>
На странице всё норм, за исключением того, что фильтр не совсем работает, он как бы работает, я вижу что в адресной строке добавляются значения при выборе radiobox'a, но вот не пойму как сделать так что бы при выборе удалялись старые значения.
то есть при выборе любого из radio в адресной строке появляется
?ms|price=(от),(до),(то что я выбрал)
Artem
17 августа 2014, 18:54
modx.pro
1
1 435
0

Комментарии: 2

Василий Наумкин
18 августа 2014, 05:11
1
+1
Нужно сделать сброс значений слайдера вручную:
1. Добавить радиокнопку с определенным id, например my_button_1.
2. Прописать javascript на нажатие этой кнопки, чтобы он сбрасывал значение слайдера в этом блоке по умолчанию
3. Значения слайдера можно найти в объекте mSearch2.sliders.

То есть, при клике выбранные значения слайдера будут сбрасываться, и тогда они не попадут в запрос — то есть, не будут иметь значения. Иначе всё это выглядит слишком сложно.

Код примерно такой (не проверял!):
$(document).on('change', '#my_button_1', function() {
	// Работаем только при активации кнопки
	if (!$(this).is(':checked')) {return;}
	
	// Передвигаем слайдер
	var s = $('#mse2_ms\\|price .mse2_number_slider');
	s.slider('values', 0, mSearch2.sliders['ms|price'][0]);
	s.slider('values', 1, mSearch2.sliders['ms|price'][1]);

	// Обновляем инпуты
	$('#mse2_ms\\|price_0').val(mSearch2.sliders['ms|price'][0]);
	$('#mse2_ms\\|price_1').val(mSearch2.sliders['ms|price'][1]);

	// По желанию, можно сразу обновить результаты
	mSearch2.load();
});
    Artem
    18 августа 2014, 07:31
    0
    Спасибо! (: буду пробовать.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2