Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   разряды цен с пробелами (https://javascript.ru/forum/jquery/57451-razryady-cen-s-probelami.html)

krasnov8953 04.08.2015 12:06

разряды цен с пробелами
 
Всем добрый день нужна помощь, есть фильтр товаров на сайте, для фильтрации по цене используется 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;
	
	});

});

krasnov8953 04.08.2015 17:31

Есть кто или мертво сдесь?

laimas 04.08.2015 17:40

Если форматируете вывод цены, значит в фильтре убирайте форматирование. А чего вы ожидаете или можно иначе как-то?

krasnov8953 04.08.2015 18:17

я думаю можно перед отправкой формы убрать эти пробелы, ну это пока фантазия не знаю как реализовать просто, новичок еще

krasnov8953 04.08.2015 18:17

как тогда вообще можно сделать это?

krasnov8953 04.08.2015 18:36

походу никак)

laimas 04.08.2015 18:46

Не знаю, что за слайдер используется, и времени нет на разборы, но это что?:

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 ") не стоило бы нагружать клиента, у серверного языка есть готовые функции форматирования чисел в любом формате, включая и денежный.

krasnov8953 04.08.2015 19:16

Это UI slider к сожалению не работает так .replace(/\D/g,'')

laimas 04.08.2015 21:35

Нет времени у меня разбираться даже в том коде, что в посте, не говоря уже о слайдерах и прочем. )

Если форма имеет поля с форматируемым значением, а проверяется естественно без них, значит нужно удалить не числовые символы в значениях, и другого решения быть не может.
А удалять надо в том месте, где значения форм передаются в фильтр, слайдер илу куда угодно.

krasnov8953 05.08.2015 16:42

Даже лучшие умы сдаются


Часовой пояс GMT +3, время: 23:21.