COMING SOON 🚀

채택완료

가격범위 슬라이드

http://happycgi.com/program/detail.php?number=17178
위 링크를 사용하여 가격범위 슬라이드를 만드려고 하는데

혹시 가격이 나오는게 이런식으로 따라다닐 수 있는지요?

3552902211_1637039220.8171.png

 

Copy
<!DOCTYPE HTML>

<html lang="ko">

 

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <meta name="viewport"

        content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">

    <title> jQuery </title>

    <script src="pay.min.js"></script>

    <script src="jquery-ui.js"></script>

 

    <!-- 스타일 -->

    <style type="text/css">

        .slider-price-wrap {

            margin: 0 auto;

            width: 100%;

        }

 

        .slider-price {

            position: relative;

            margin: 0 auto;

            width: 100%;

            height: 4px;

            background: #ccc;

        }

 

        .slider-price .ui-slider-handle {

            position: absolute;

            top: -5px;

            width: 10px;

            height: 10px;

            margin-left: -5px;

            border-radius: 50%;

            border: 1px solid #007C4F;

            background: #fff;

            box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.2);

            outline: none;

        }

 

        .slider-price .ui-slider-range {

            position: absolute;

            height: 4px;

            background: #007C4F;

        }

 

        .slider-price-wrap .slider-result {

            margin-top: 20px;

            width: 240px;

            font-size: 14px;

        }

 

        .slider-price-wrap .slider-result:after {

            content: "";

            display: block;

            clear: both;

        }

 

        .slider-price-wrap .slider-result .left {

            float: left;

            width: 50%;

        }

 

        .slider-price-wrap .slider-result .right {

            float: right;

            width: 50%;

            text-align: right;

        }

 

        .slider-price-wrap .slider-result .num {

            font-size: 14px;

            color: #000000;

            width: inherit;

        }

 

        .slider-price-wrap .slider-result .right .num {

            text-align: right;

        }

 

   

    </style>

    <!-- // 스타일 -->

 

</head>

 

<body>

    <div id="wrap">

 

        <div class="slider-price-wrap">

            <div id="priceRangeSet" class="slider-price"></div>

            <div class="slider-result">

                <p class="left">

                    <input type="text" class="num" id="priceRangeMin" name="priceRangeMin" title="가격 최소값(숫자만 입력 가능)"

                        style="ime-mode:disabled;" onkeypress="txtOnlyNum(event)"

                        onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" />

                </p>

                <p class="right">

                    <input type="text" class="num" id="priceRangeMax" name="priceRangeMax" title="가격 최대값 (숫자만 입력 가능)"

                        style="ime-mode:disabled;" onkeypress="txtOnlyNum(event)"

                        onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" />

                </p>

            </div>

        </div><!-- // slider-price-wrap -->

 

    </div>

    <!-- // wrap -->

 

    <!-- 스크립트 -->

    <script>

        var numberSetComma = function (val) {

            while (/(\d+)(\d{3})/.test(val.toString())) {

                val = val.toString().replace(/(\d+)(\d{3})/, '$1' + ',' + '$2');

            }

            return val;

        };

        var numberDelComma = function (val) {

            return parseInt(val.replace(/,/g, ""));

        };

        var txtOnlyNum = function (e) {

            var keycode = (window.netscape) ? e.which : e.keyCode;

            if (!(keycode == 0 || keycode == 8 || (keycode >= 48 && keycode <= 57))) {

                if (window.netscape) {

                    e.preventDefault();

                } else {

                    e.returnValue = false;

                }

            }

        }

        var initPriceRange = function (minVal, maxVal) {

            //슬라이더 init

            var priceRS = $("#priceRangeSet");

            var priceRMax = $("#priceRangeMax");

            var priceRMin = $("#priceRangeMin");

 

            priceRS.slider({

                range: true,

                min: minVal,

                max: maxVal,

                values: [minVal, maxVal],

                slide: function (event, ui) {

                    priceRMin.val(numberSetComma(ui.values[0]));

                    priceRMax.val(numberSetComma(ui.values[1]));

                }

            });

            //텍스트 폼에 최초 최대값 세팅

            priceRMin.val(numberSetComma(priceRS.slider("values", 0))).attr("title", "가격 최소값(숫자만 입력 가능, " +

                numberSetComma(priceRS.slider("values", 0)) + " 이상)");

            priceRMax.val(numberSetComma(priceRS.slider("values", 1))).attr("title", "가격 최대값(숫자만 입력 가능, " +

                numberSetComma(priceRS.slider("values", 1)) + " 이하)");

 

            //접근성 처리를 위한 텍스트 폼과 slider UI 연동

            priceRMin.bind({

                keyup: function () {

                    if ($(this).val().length > 0) {

                        $(this).val(numberSetComma(numberDelComma($(this).val())));

                    }

                },

                blur: function () {

                    var originNum = numberDelComma($(this).val());

                    var maxFormVal = numberDelComma(priceRMax.val());

                    if (originNum < minVal) {

                        alert("최소 기준가격은  " + numberSetComma(minVal) + "원 입니다. 최소 기준가격 이상으로 입력해주세요.");

                        $(this).val(numberSetComma(minVal));

                        $(this).focus();

                    }

                    if (originNum >= maxFormVal) {

                        alert("가격 검색 시작값이 끝값보다 크거나 같습니다. 끝값인 " + priceRMax.val() + "보다 작은 값을 입력해주세요.");

                        $(this).val(numberSetComma(minVal));

                        $(this).focus();

                    }

                    priceRS.slider({

                        values: [numberDelComma(priceRMin.val()), numberDelComma(priceRMax.val())]

                    });

                }

            });

            priceRMax.bind({

                keyup: function () {

                    if ($(this).val().length > 0) {

                        $(this).val(numberSetComma(numberDelComma($(this).val())));

                    }

                },

                blur: function () {

                    var originNum = numberDelComma($(this).val());

                    var minFormVal = numberDelComma(priceRMin.val());

                    if (originNum > maxVal) {

                        alert("최대 기준가격은  " + numberSetComma(maxVal) + "원 입니다. 최대 기준가격 이하로 입력해주세요.");

                        $(this).val(numberSetComma(maxVal));

                        $(this).focus();

                    }

                    if (originNum <= minFormVal) {

                        alert("가격 검색 끝값이 시작값보다 작거나 같습니다. 시작값인 " + priceRMin.val() + "보다 큰 값을 입력해주세요.");

                        $(this).val(numberSetComma(maxVal));

                        $(this).focus();

                    }

                    priceRS.slider({

                        values: [numberDelComma(priceRMin.val()), numberDelComma(priceRMax.val())]

                    });

                }

            });

        };

 

        $(function () {

            initPriceRange(0, 300000); //로드시 혹은 로드 후 리스팅된 상품가격의 최소 최대값

        });

    </script>

    <!-- //스크립트 -->

 

</body>

 

</html>
|

답변 1개 / 댓글 2개

채택된 답변
+20 포인트

답변에 대한 댓글 2개

혹시 천단위 콤마 표시 어떻게 하는지 아시나요?
js/common.js에 있는
number_format()
활용해 보세요.

답변을 작성하려면 로그인이 필요합니다.