разряды цен с пробелами
Всем добрый день нужна помощь, есть фильтр товаров на сайте, для фильтрации по цене используется UI-slider, цена в инпуте имеет вид 1000000 преобразовал цену с помощью функции в 1 000 000 код функции:
function commaInt(val) {
return String(val).split("").reverse().join("")
.replace(/(.{3}\B)/g, "$1 ")
.split("").reverse().join("");
}
но теперь при сабмите не фильтрует, т.к. в гет параметрах на месте пробелов стоит + Как исправить код чтобы данные в гет параметры приходили без пробелов? Заранее спасибо ниже приведен код слайдера:
jQuery(document).ready(function(){
/* слайдер цен */
function commaInt(val) {
return String(val).split("").reverse().join("")
.replace(/(.{3}\B)/g, "$1 ")
.split("").reverse().join("");
}
function delInt(val)
{
return String(val).split("").reverse().join("")
.replace(/\s/g, " ")
.split("").reverse().join("");
}
jQuery("#slider").slider({
min: 100000,
max: 9999999,
values: [100000,9999999],
range: true,
step: 10000,
stop: function(event, ui) {
jQuery("input#minCost").val(commaInt(jQuery("#slider").slider("values",0)));
jQuery("input#maxCost").val(commaInt(jQuery("#slider").slider("values",1)));
},
slide: function(event, ui){
jQuery("input#minCost").val(commaInt(jQuery("#slider").slider("values",0)));
jQuery("input#maxCost").val(commaInt(jQuery("#slider").slider("values",1)));
}
});
jQuery("input#minCost").change(function(){
var value1=jQuery("input#minCost").val();
var value2=jQuery("input#maxCost").val();
if(parseInt(value1) > parseInt(value2)){
value1 = value2;
jQuery("input#minCost").val(value1);
}
jQuery("#slider").slider("values",0,value1);
});
jQuery("input#maxCost").change(function(){
var value1=jQuery("input#minCost").val();
var value2=jQuery("input#maxCost").val();
if (value2 > 9999999) { value2 = 9999999; jQuery("input#maxCost").val(9999999)}
if(parseInt(value1) > parseInt(value2)){
value2 = value1;
jQuery("input#maxCost").val(value2);
}
jQuery("#slider").slider("values",1,value2);
});
// фильтрация ввода в поля
jQuery('input').keypress(function(event){
var key, keyChar;
if(!event) var event = window.event;
if (event.keyCode) key = event.keyCode;
else if(event.which) key = event.which;
if(key==null || key==0 || key==8 || key==13 || key==9 || key==46 || key==37 || key==39 ) return true;
keyChar=String.fromCharCode(key);
if(!/\d/.test(keyChar)) return false;
});
});
|
Есть кто или мертво сдесь?
|
Если форматируете вывод цены, значит в фильтре убирайте форматирование. А чего вы ожидаете или можно иначе как-то?
|
я думаю можно перед отправкой формы убрать эти пробелы, ну это пока фантазия не знаю как реализовать просто, новичок еще
|
как тогда вообще можно сделать это?
|
походу никак)
|
Не знаю, что за слайдер используется, и времени нет на разборы, но это что?:
var value1=jQuery("input#minCost").val();
var value2=jQuery("input#maxCost").val();
если это и есть передача значений полей в фильтр, уберите форматирование у значений:
var value1=jQuery("input#minCost").val().replace(/\D/g,'');
В общем ищите место где оперируют значения полей, и даже не зная JS, "методом тыка" найдете место где необходимо .replace(/\D/g,'') PS. Вот этим .replace(/(.{3}\B)/g, "$1 ") не стоило бы нагружать клиента, у серверного языка есть готовые функции форматирования чисел в любом формате, включая и денежный. |
Это UI slider к сожалению не работает так .replace(/\D/g,'')
|
Нет времени у меня разбираться даже в том коде, что в посте, не говоря уже о слайдерах и прочем. )
Если форма имеет поля с форматируемым значением, а проверяется естественно без них, значит нужно удалить не числовые символы в значениях, и другого решения быть не может. А удалять надо в том месте, где значения форм передаются в фильтр, слайдер илу куда угодно. |
Даже лучшие умы сдаются
|
179 просмотров и никто не может помочь?
|
179 просмотров никто не может подсказать?
|
Ну наверное надо показать html-код той части, где есть элементы ввода, чтобы понять как они связаны с представленным кодом. Иначе ведь есть в коде работа со значениями jQuery("input#minCost").val(); и т.п., но почему-то какие-то проблемы.
А иначе ищите сами, удаляйте пробелы, ну или более радикально - не форматируйте значения полей ввода, тем более, что форматируемый текст можно и рядышком выводить, который будет автоматически изменяться при изменении значений в полях ввода. |
| Часовой пояс GMT +3, время: 23:08. |