thomasJang / axisj

javascript UI library
http://axisj.com/
GNU Lesser General Public License v2.1
310 stars 86 forks source link

div 팝업에서 뒤에 있는 그리드 커서 키이벤트에 의해 같이 되는 버그 #538

Closed david80 closed 9 years ago

david80 commented 9 years ago

selectbox 을 키로 위아래 조절하면 뒤에 가려져있는 그리드에 있는 키이벤트가 움직입니다.

3 콤보박스에 있는 노란색 반전색깔 되어있는 부분을 화살표키로 위아래 움직이면 뒤에 있는 그리드의 노란색 행도 같이 움직입니다.

그리고 opendiv로 열었는데도 뒤에 있는 그리드 행이 키이벤트에 의해 움직이네요

thomasJang commented 9 years ago

패치 되었습니다.

david80 commented 9 years ago
item: {
            target: null,
            get: function() { return this.target; },
            bind: function() {
                this.target = fnObj.modal.target;
            },
            open: function(act_tp, idx, Obj) {
                var pars = "";
                this.target.openDiv({
                    modalID: "modalDiv01",
                    targetID: "modalContent",
                    pars: pars,
                    top: 100, width: 900,
                    closeByEscKey: true
                });

                $("#adj_storage_no").unbindSelect();
                $("#adj_st_rowcol").unbindInput();

                $("#adj_storage_no").bindSelect({
                    ajaxUrl: "/WPBase/Common/UI/FindCombo.aspx/SelectStorageToFind",
                    ajaxPars: "",
                    isspace: false,
                    isspaceTitle: "==선택==",
                    onChange: function (ogj, IsPostBack) {
                        var value = (this.optionValue || "");

                        //IsPostBack옵션
                        //trace("IsPostBack===="+IsPostBack);
                        if (typeof IsPostBack == "undefined") {
                            if (value != "") {
                                $("#adj_st_rowcol").val("");
                                $("#adj_st_rowcol").bindSelector({
                                    direction: "bottom",
                                    appendable: true,
                                    optionPrintLength: 200,
                                    ajaxUrl: "/WPBase/Common/UI/FindCombo.aspx/SelectStorageRowColToFind",
                                    ajaxPars: "storage_no=" + value,
                                    onChange: function () {
                                        //trace(this);
                                    }
                                });
                            }
                        }
                    },
                    onLoad: function () {
                        //trace(this);
                        //trace(this.options[0].optionValue);
                        $("#adj_st_rowcol").bindSelector({
                            direction: "bottom",
                            appendable: true,
                            optionPrintLength: 200,
                            ajaxUrl: "/WPBase/Common/UI/FindCombo.aspx/SelectStorageRowColToFind",
                            ajaxPars: "storage_no=" + this.options[0].optionValue,
                            onChange: function () {
                                //trace(this);
                            }
                        });

                        $("#stock_qty_adj").bindMoney({
                            min: 0,
                            max: 900000000,
                            onchange: function () {
                                //trace(this);
                                fnObj.item.calc_form();
                            }
                        });

                    }
                });

                //document.divWriteForm.code_nm_wr.focus();

                if (act_tp == "U" && Obj != null) {

                    $("#idx_wr").val(idx);  //Item Index 
                    $("#no").val(Obj.no);
                    $("#cust_nm").val(Obj.cust_nm.dec());
                    $("#po_no").val(Obj.po_no);

                    $("#goods_nm").val(Obj.goods_nm.dec());
                    $("#size_nm").val(Obj.size_nm.dec());
                    $("#grade_nm").val(Obj.grade_nm.dec());
                    $("#selection_nm").val(Obj.selection_nm.dec());
                    $("#storage_nm").val(Obj.storage_nm.dec());
                    $("#st_rowcol").val(Obj.st_rowcol.dec());

                    $("#stock_qty").val(Obj.stock_qty.money());
                    $("#stock_wgt").val(Obj.stock_wgt.money());
                    $("#stock_qty_real").val(Obj.stock_qty_real.money());
                    $("#stock_wgt_real").val(Obj.stock_wgt_real.money());

                    $("#stock_qty_adj").val(Obj.stock_qty_adj.money());
                    $("#stock_wgt_adj").val(Obj.stock_wgt_adj.money());

                    $("#adj_storage_no").bindSelectSetValue(Obj.adj_storage_no);
                    $("#adj_st_rowcol").val(Obj.adj_st_rowcol);
                    $("#adj_bigo").val(Obj.adj_bigo.dec());

                    /*
                    $("#act_tp_wr").val(act_tp);
                    $("#code_cd_wr").val(Obj.code_cd);
                    $("#group_cd_wr").bindSelectDisabled(true);
                    $("#group_cd_wr").bindSelectSetValue(Obj.code_cd.left(2));
                    $("#code_nm_wr").val((Obj.code_nm || "").dec());
                    $("#code_eng_nm_wr").val((Obj.code_eng_nm || "").dec());
                    $("#descr_wr").val((Obj.descr || "").dec());
                    $("#sys_yn_wr").bindSelectSetValue(Obj.sys_yn);
                    if (Obj.sys_yn == "N") $("#btnDel").css("display", "");
                    */
                }

            },
            edit: function(idx, Obj) {
                if (Obj != null) {
                    fnObj.item.open("U", idx, Obj);
                }
            }
}

div는 같은 페이지에 div객체로 숨긴처리된걸 호출합니다. select박스것은 해결이 되었네요~ 여전히 opendiv로 열였는데도 뒤에 있는 그리드행이 움직입니다.

thomasJang commented 9 years ago

body에 마스크가 씌워지면 키입력 이벤트가 발생되지 않도록 변경 하였습니다. 레이어 팝업일 때는 이벤트제어가 참 어렵네요. 그리드에 엘리먼트에 포커스를 주려면 A, input, select등의 아이템이 있어야 포커스를 줄수 있는데요. 그리드에 포커스주는 방법을 근본적으로 해결하기 전까진 조금 레이어 처리시 어색할 수 있겠습니다.

언제나 그렇지만 또 해결이 될 것입니다.