Приветствую!
Прошу не пинать за нубский вопрос. :)
Имеем: виджет вордпресса, который отображает фильтр по дням (срок действия предложения) в котором можно выбирать значения от-до.
В коде выглядит следующим образом:
jQuery( '.filter-days .slider' ).slider({
range: true,
min: 0,
max: 120,
values: [ 0, 80 ],
slide: function( event, ui ) {
jQuery('.input-min').val( ui.values[0] );
jQuery('.input-max').val( ui.values[1] );
jQuery('.filter-days .info .begin').text( ui.values[0] + ( ui.values[0] != 1 ? ' дней' : ' день' ) );
jQuery('.filter-days .info .end').text( ui.values[1] + ( ui.values[1] != 1 ? ' дней' : ' день' ) );
}
});
var begin = jQuery('.filter-days .slider').slider('values', 0);
var end = jQuery('.filter-days .slider').slider('values', 1);
jQuery('.filter-days .info .begin').text( begin + ( begin != 1 ? ' days' : ' day' ) );
jQuery('.filter-days .info .end').text( end + ( end != 1 ? ' days' : ' day' ) );
});
Как изменить код чтобы вся эта конструкция могла корректно работать с русским языком?! :)
В JS я полный нуб, так что прошу объяснить как ребёнку или лабрадору.)))))
Update:
Насколько я понимаю нужно добавить третье условие в этот код:
jQuery('.filter-days .info .begin').text( ui.values[0] + ( ui.values[0] != 1 ? ' дней' : ' день' ) );
jQuery('.filter-days .info .end').text( ui.values[1] + ( ui.values[1] != 1 ? ' дней' : ' день' ) );
Update2:
В итоге решение выглядит так:
jQuery( '.filter-days .slider' ).slider({
range: true,
min: 0,
max: 120,
values: [ 22, 80 ],
slide: function( event, ui ) {
jQuery('.input-min').val( ui.values[0] );
jQuery('.input-max').val( ui.values[1] );
var f, g, h, j, k, l, m, n;
var begin1 = (ui.values[0]);
var end1 = (ui.values[1]);
var j = begin1.toString();
var g = j.substr(j.length - 1, 1); //последняя цифра она же b а f - это a а g это b
var h = j.substr(j.length - 2, 1); //предпоследняя цифра она же c
var n = end1.toString(10);
var l = n.substr(j.length - 1, 1); //последняя цифра она же b а f - это a а g это b
var m = n.substr(j.length - 2, 1); //предпоследняя цифра она же c
if (h == 1 && j.length != 1){f = " дней"}
else {
if (g == 1){f = " день"}
else {
if (g == 2 || g == 3 || g == 4){f = " дня"}
else {
f = " дней"
}
}
}
if (m == 1 && n.length != 1){k = " дней"}
else {
if (l == 1){k = " день"}
else {
if (l == 2 || l == 3 || l == 4){k = " дня"}
else {
k = " дней"
}
}
}
jQuery('.filter-days .info .begin').text( (ui.values[0]) + f );
jQuery('.filter-days .info .end').text( (ui.values[1]) + k );
}
});
В целом работает, но смущает 2 вещи:
Дохренища переменных. Наверняка ведь можно найти более изящное решение...но напомню - я вообще не шарю в JS :(
Вылез баг - когда первое значение уходит <10 текст для второго значения меняется на "дней"
Профи, если кто подскажет где сделал ошибку и как её исправить буду оч благодарен!
P.s. Сорри за кривенький код