Web Script 백업

By | 2020년 2월 18일
<script>
    $(document).ready(function()
    {
        var selectCustIdx;  // 거래처 선택값
        var selectUnitStandard;
        var RowDisplayVal;

        var rawUnitQuantity = new Array();
        var rawCustIdx = new Array();
        var rawObjNumber = new Array();
        var rawObjstandard = new Array();

        // 계산 함수 호출
        checkCal();


        // 거래처 선택
        $("#rowCustIdx").change(function() {
            selectCustIdx = $(this).val();
            //
            SelectUnitStandardReload();
        });

        // 규격 선택
        $("#rowUnitStandard").change(function() {
            selectUnitStandard = $(this).val();
            //
            RowDisplayCheck();
        });

        // 거래처 선택시 규격 제어하기
        function SelectUnitStandardReload()
        {
            var custUnitStandardData = new Array();
            var option;

            //
            if( typeof selectCustIdx == "undefined") { selectCustIdx = "0"; };
            if( typeof selectUnitStandard == "undefined") { selectUnitStandard = "0"; };

            //
            <?php
            foreach( $custUnitStandardList as $row)
            {
                echo 'custUnitStandardData.push("'.$row.'"); '.chr(10);
            };
            ?>

            // 초기화 추가
            $("#rowUnitStandard option").remove();

            //
            if( selectCustIdx == "0" &amp;&amp; selectUnitStandard == "0")
            {
                option = $("<option value=\"0\" selected=\"selected\" style=\"font-weight:bold;color:#C00000\">규격 :: 전체</option>");
                $('#rowUnitStandard').append(option);
                
                // 규격 선택박스 초기화
                selectUnitStandard = "0";

                // 규격 selectbox 초기화후 값 채움
                $.each(custUnitStandardData, function(index, item)
                {
                    var itemArr = item.split("|");
                    option = $("<option value=\"" + itemArr[1] + "\" style=\"font-weight:bold;color:#000\">규격 :: " + itemArr[1] + "</option>");
                    $('#rowUnitStandard').append(option);
                });
            }
            else if( selectCustIdx != "0" &amp;&amp; selectUnitStandard == "0")
            {
                //
                option = $("<option value=\"0\" selected=\"selected\" style=\"font-weight:bold;color:#C00000\">규격 :: 전체</option>");
                $('#rowUnitStandard').append(option);

                // 규격 선택박스 초기화
                selectUnitStandard = "0";

                // 규격 selectbox 초기화후 값 채움
                $.each(custUnitStandardData, function(index, item)
                {
                    var selectCustIdxText = selectCustIdx + "|";
                    if( item.indexOf(selectCustIdxText) !== -1 )
                    {
                        item = item.replace(selectCustIdxText, "");
                        
                        option = $("<option value=\"" + item + "\"style=\"font-weight:bold;color:#000\">규격 :: " + item + "</option>");
                        $('#rowUnitStandard').append(option);
                    }
                });
            }
            else if( selectCustIdx == "0" &amp;&amp; selectUnitStandard != "0")
            {
                option = $("<option value=\"0\">규격 :: 전체</option>");
                $('#rowUnitStandard').append(option);

                // 규격 selectbox 초기화후 값 채움
                $.each(custUnitStandardData, function(index, item)
                {
                    var itemArr = item.split("|");

                    if( selectUnitStandard == itemArr[1])
                    {
                        option = $("<option value=\"" + itemArr[1] + "\" selected=\"selected\"style=\"font-weight:bold;color:#C00000\">규격 :: " + itemArr[1] + "</option>");
                        selectUnitStandard = itemArr[1];
                    }
                    else
                    {
                        option = $("<option value=\"" + itemArr[1] + "\"style=\"font-weight:bold;color:#000\">규격 :: " + itemArr[1] + "</option>");
                    };
                    
                    $('#rowUnitStandard').append(option);
                });
            }
            else if( selectCustIdx != "0" &amp;&amp; selectUnitStandard != "0")
            {
                option = $("<option value=\"0\">규격 :: 전체</option>");
                $('#rowUnitStandard').append(option);

                // 규격 selectbox 초기화후 값 채움
                $.each(custUnitStandardData, function(index, item)
                {
                    var selectCustIdxText = selectCustIdx + "|";
                    if( item.indexOf(selectCustIdxText) !== -1 )
                    {
                        var itemArr = item.split("|");
                        item = item.replace(selectCustIdxText, "");
                        
                        //
                        if( selectUnitStandard == itemArr[1])
                        {
                            option = $("<option value=\"" + itemArr[1] + "\" selected=\"selected\" style=\"font-weight:bold;color:#C00000\">규격 :: " + itemArr[1] + "</option>");
                            selectUnitStandard = itemArr[1];
                        }
                        else
                        {
                            option = $("<option value=\"" + itemArr[1] + "\" style=\"font-weight:bold\"> 규격 :: " + itemArr[1] + "</option>");
                            selectUnitStandard = "0";
                        };

                        $('#rowUnitStandard').append(option);
                    }
                });
            }            
            else
            {
                //
                option = $("<option value=\"0\" style=\"font-weight:bold;color:#C00000\" selected=\"selected\">규격 :: 전체</option>");
                $('#rowUnitStandard').append(option);

                // 규격 선택박스 초기화
                selectUnitStandard = "0";

                // 규격 selectbox 초기화후 값 채움
                $.each(custUnitStandardData, function(index, item)
                {
                    var itemArr = item.split("|");
                    option = $("<option value=\"" + itemArr[1] + "\" style=\"font-weight:bold\">규격 :: " + itemArr[1] + "</option>");
                    $('#rowUnitStandard').append(option);
                });
            }

            //
            RowDisplayCheck();
        }

        // 행 display option 조절
        function RowDisplayCheck()
        {
            if( typeof selectCustIdx == "undefined") { selectCustIdx = "0"; };
            if( typeof selectUnitStandard == "undefined") { selectUnitStandard = "0"; };

            //
            if( selectCustIdx != "0" &amp;&amp; selectUnitStandard != "0")
            {
                RowDisplayVal = selectCustIdx + "-" + selectUnitStandard;
            }
            else if(selectCustIdx != "0" &amp;&amp; selectUnitStandard == "0")
            {
                RowDisplayVal = selectCustIdx + "-";
            }
            else if(selectCustIdx == "0" &amp;&amp; selectUnitStandard != "0")
            {
                RowDisplayVal = "-" + selectUnitStandard;
            }
            else 
            {
                RowDisplayVal = "";
            };


            //
            if( RowDisplayVal == "")
            {
                $("#rowListTable tbody tr").each(function () 
                {
                    $(this).css("display", "");
                });
            } 
            else 
            {
                // listup 행을 체크하도록함.
                $("#rowListTable tbody tr").each(function () 
                {
                    var RowId = $(this).attr("id");

                    // id 없는것을 제외하도록함.
                    if( typeof RowId != "undefined")
                    {
                        // 기존 감추진것을 모두 보여지도록함.
                        if( RowId.indexOf(RowDisplayVal) !== -1  &amp;&amp; $(this).is(":visible") == false)
                        {
                            $(this).css("display", "");
                        };

                        // 불필요한것은 감춰지도록함.
                        if( RowId.indexOf(RowDisplayVal) === -1)
                        {
                            if( $(this).eq(0).children().find('input[name="rowSelect"]').is(':checked') == true)
                            {

                            }
                            else
                            {
                                $(this).css("display", "none");
                            }
                        };
                    };
                });
            };

            //
            checkCal();
        };


        // 수량 input value change Dected
        $('input[name="inputQuantity"]').on("propertychange change keyup paste input text", function() {  
            console.log("키 입력");
            checkCal();
        });

        // 선택
        $(document).on("click", "input[name=rowSelect]", function() 
        {
            checkCal();
        });

        // 체크된것만 계산하기
        function checkCal()
        {
            // 선언
            var unitStandard;
            var unitTotallength;
            var inputQuantity;
            var DSQSobjStandardArr_0;
            var DSQSobjStandardArr_1;
            var DSQSobjStandardArr_2;
            var DSQSObjWeight;
            var unitStandardArr;

            var cal;
            var cal2;
            var calTotalLengthSum = 0;

            // 초기화
            $('input[name="rawCustIdx"]').val("");
            $('input[name="rawObjNumber"]').val("");
            $('input[name="rawObjstandard"]').val("");
            $('input[name="rawUnitQuantity"]').val("");
            
            // 선언
            rawCustIdx = new Array();
            rawObjNumber = new Array();
            rawObjstandard= new Array();
            rawUnitQuantity = new Array();
            rawUnitTotallength = new Array();

            //
            $("#rowListTable tbody tr").each(function () 
            {
                var RowId = $(this).attr("id");

                // id 없는것을 제외하도록함.
                if( typeof RowId != "undefined")
                {
                    //
                    if( $(this).eq(0).children().find('input[name="rowSelect"]').is(':checked') == true)
                    {
                        // inputbox 제어
                        $(this).eq(0).children().find('input[name="inputQuantity"]').attr("readonly", false);
                        $(this).eq(0).children().find('input[name="inputQuantity"]').css("background-color", "#fff");

                        // text 값 회득
                        unitTotallength = $(this).eq(0).children().find('.unitTotallength').text();
                        unitStandard = $(this).eq(0).children().find('.unitStandard').text();
                        inputQuantity = $(this).eq(0).children().find('input[name="inputQuantity"]').val();
                        
                        // text 값 회득
                        DSQSobjStandardArr_0 = $("#DSQSobjStandardArr_0").text();
                        DSQSobjStandardArr_1 = $("#DSQSobjStandardArr_1").text();
                        DSQSobjStandardArr_2 = $("#DSQSobjStandardArr_2").text();
                        DSQSObjWeight = $("#DSQSObjWeight").text();

                        // 계산 및 표현
                        unitTotallength = onlyNumber(unitTotallength);
                        inputQuantity = onlyNumber(inputQuantity);
                        unitStandardArr = unitStandard.split("*");
                        unitStandardArr[0] = onlyNumber(unitStandardArr[0]);
                        unitStandardArr[1] = onlyNumber(unitStandardArr[1]);
                        unitStandardArr[2] = onlyNumber(unitStandardArr[2]);

                        DSQSobjStandardArr_0 = onlyNumber(DSQSobjStandardArr_0);
                        DSQSobjStandardArr_1 = onlyNumber(DSQSobjStandardArr_2);
                        DSQSobjStandardArr_2 = onlyNumber(DSQSobjStandardArr_2);
                        DSQSObjWeight = onlyNumber(DSQSObjWeight);

                        //
                        cal = ( (unitStandardArr[0] - unitStandardArr[2]) * unitStandardArr[2] * 0.02466) * ( unitTotallength - 0.3) * inputQuantity;

                        //
                        cal2 = cal.toFixed(2) / ( DSQSobjStandardArr_0 - DSQSobjStandardArr_2) * DSQSobjStandardArr_2 * 0.02466;

                        calTotalLengthSum = Number(calTotalLengthSum) + Number(cal2.toFixed(2));

                        // text 표시
                        $(this).eq(0).children().find('.calTotalWeight').text( numberWithCommas (cal.toFixed(2) ) );
                        $(this).eq(0).children().find('.calTotalLength').text( numberWithCommas (cal2.toFixed(2) ) );

                        // 배열에 추가
                        rawCustIdx.push($(this).eq(0).children().find('.custIdx').text());
                        rawObjNumber.push($(this).eq(0).children().find('.objNumber').text());
                        rawObjstandard.push(unitStandard);
                        rawUnitQuantity.push(inputQuantity);
                        rawUnitTotallength.push(unitTotallength);

                        // form에 추가
                        $('input[name="rawCustIdx"]').val(rawCustIdx);
                        $('input[name="rawObjNumber"]').val(rawObjNumber);
                        $('input[name="rawObjstandard"]').val(rawObjstandard);
                        $('input[name="rawUnitQuantity"]').val(rawUnitQuantity);
                        $('input[name="rawUnitTotallength"]').val(rawUnitTotallength);
                        
                    }
                    else
                    {
                        $(this).eq(0).children().find('input[name="inputQuantity"]').attr("readonly", true);
                        $(this).eq(0).children().find('input[name="inputQuantity"]').css("background-color", "#FFF2CD");
                        $(this).eq(0).children().find('input[name="inputQuantity"]').val("");
                        $(this).eq(0).children().find('.calTotalWeight').text("");
                        $(this).eq(0).children().find('.calTotalLength').text("");
                    }

                    $("#calTotalLengthSum").text( numberWithCommas(calTotalLengthSum) );
                    $('input[name="SumUnitQuantity"]').val( calTotalLengthSum );


                };

            });
        };

        // 숫자만 남기기
        function onlyNumber(str){
            if( str != "")
            {
                return str.replace(/[^0-9.]/g,'');
            }
            else
            {
                return '';
            };
        }

        // 천단위 콤바
        function numberWithCommas(str) {
            return str.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        }



        // 저장하기
        $(document).on("click", "#viewPageSvae", function() 
        {
            // 전송하기
            $('#createShipListSpecialNoteBoxSave').attr('action','/Materialinput/createShipListSpecialNoteSave').submit();
        });

        // 창닫기
        $(document).on("click", "#viewPageClose", function() {
            self.close();
        });


    });


</script>

복잡하게 만들어진 소스 입니다. table 목록을 만들어서 해당 줄에 대해서 display를 조절하는 기능도 있습니다.

selectbox의 항목을 처리해서 가져와서 1개 선택시에 2번재가 동적으로 변경되도록 하여서 selectbox 항목이 변경이 가능하도록 하는 소스도 있습니다.

또한, form submit 전에 정보를 취합해서 input에 담아서 단순하게 넘기기 위한 소스도 있습니다.