js实现表格的重置,是否变更,是否重复

1. 表格的重置

    /****************************************************************
     * 機 能: クリア処理
     * 引 数: なし
     * 戻り値: なし
     ****************************************************************/
    function doClear() {
        //初期化の時、IPアドレスの値
        var oldDevIp = document.getElementsByName("Hid_OldIpAddress")[0].value;
        //IPアドレスの値を初期化の時様に設定する
        document.getElementsByName("Txt_IpAdd")[0].value = oldDevIp;
        // [PBR IPアドレスレンジ指定]の「選択」項目リストを取得する。
        var pbr_selBoxeList = document.getElementsByName("Lst_ProtocolList");
        // [PBR IPアドレスレンジ指定]の「IPアドレス」項目リストを取得する。
        var pbr_startSubIpList = document.getElementsByName("Txt_StartSubIpList");
        // [PBR IPアドレスレンジ指定]の「Prefix長」項目リストを取得する。
        var pbr_prefixLengthList = document.getElementsByName("Txt_PrefixLenList");
        // 初期化の[PBR IPアドレスレンジ指定]の「選択」項目リストを取得する。
        var protocolSelListStr = '<s:property value="Lst_ProtocolList" escape="false"/>';
        // 初期化の[PBR IPアドレスレンジ指定]の「IPアドレス」項目リストを取得する。
        var startSubIpListStr = '<s:property value="Txt_StartSubIpList" escape="false"/>';
        // 初期化の[PBR IPアドレスレンジ指定]の「Prefix長」項目リストを取得する。
        var prefixLenListStr = '<s:property value="Txt_PrefixLenList" escape="false"/>';
        // 配列に変換する。
        protocolSelListStr = protocolSelListStr.substring(1, protocolSelListStr.length - 1);
        startSubIpListStr = startSubIpListStr.substring(1, startSubIpListStr.length - 1);
        prefixLenListStr = prefixLenListStr.substring(1, prefixLenListStr.length - 1);
        var protocolSelList = protocolSelListStr.split(", ");
        var startSubIpList = startSubIpListStr.split(", ");
        var prefixLenList = prefixLenListStr.split(", ");
        // [PBR IPアドレスレンジ指定]のクリア処理
        for (var i = 0; i < pbr_selBoxeList.length; i++) {
            // 「プロトコル」項目を取得する。
            var selObj = pbr_selBoxeList[i];
            // 「IPアドレス」項目を取得する。
            var startSubIp = pbr_startSubIpList[i];
            // 「Prefix長」項目を取得する。
            var prefixLength = pbr_prefixLengthList[i];
            // プロトコル
            selObj.value = protocolSelList[i];
            // IPアドレス
            startSubIp.value = startSubIpList[i];
            // Prefix長
            prefixLength.value = prefixLenList[i];
        }
    }

2. 表格的内容是否变更

// 変更するかどうかフラグ
        var changeFlg = false;
        var initProtocolList = document.getElementsByName("Hid_Init_ProtocolList");
        var initStartSubIpList = document.getElementsByName("Hid_Init_StartSubIpList");
        var initPrefixLenList = document.getElementsByName("Hid_Init_PrefixLenList");
        // [PBR IPアドレスレンジ指定]の「選択」項目リストを取得する。
        var pbr_selBoxeList = document.getElementsByName("Lst_ProtocolList");
        // [PBR IPアドレスレンジ指定]の「IPアドレス」項目リストを取得する。
        var pbr_startSubIpList = document.getElementsByName("Txt_StartSubIpList");
        // [PBR IPアドレスレンジ指定]の「Prefix長」項目リストを取得する。
        var pbr_prefixLengthList = document.getElementsByName("Txt_PrefixLenList");
        var selObj = "";
        var startSubIp = "";
        var prefixLength = "";
        for (var i = 0; i < pbr_selBoxeList.length; i++) {
            // 「プロトコル」項目を取得する。
            var selBoxeList = pbr_selBoxeList[i].value;
            if (i != (pbr_selBoxeList.length - 1) ) {
                selObj = selObj + selBoxeList + "," + " ";
            } else {
                selObj = selObj + selBoxeList;
            }
            // 「IPアドレス」項目を取得する。
            var startSubIpList = pbr_startSubIpList[i].value;
            if (i != (pbr_selBoxeList.length - 1) ) {
                startSubIp = startSubIp + startSubIpList + "," + " ";
            } else {
                startSubIp = startSubIp + startSubIpList;
            }
            // 「Prefix長」項目を取得する。
            var prefixLengthList = pbr_prefixLengthList[i].value;
            if (i != (pbr_selBoxeList.length - 1) ) {
                prefixLength = prefixLength + prefixLengthList + "," + " ";
            } else {
                prefixLength = prefixLength + prefixLengthList;
            }
        }
        // プロトコル
        if (selObj != initProtocolList[0].value) {
            changeFlg = true;
        }
        // IPアドレス
        if (startSubIp != initStartSubIpList[0].value) {
            changeFlg = true;
        }
        // Prefix長
        if (prefixLength != initPrefixLenList[0].value) {
            changeFlg = true;
        }
        if (changeFlg) {
            //破棄確認ダイアログ出力
            if (!confirm(getMessage("MEM001-0009"))) {
                return;
            }
        }

3. 表格的内容是否重复

// [PBR IPアドレスレンジ指定]の「選択」項目リストを取得する。
        var pbr_selBoxeList = document.getElementsByName("Lst_ProtocolList");
        // [PBR IPアドレスレンジ指定]の「IPアドレス」項目リストを取得する。
        var pbr_startSubIpList = document.getElementsByName("Txt_StartSubIpList");
        // [PBR IPアドレスレンジ指定]の「Prefix長」項目リストを取得する。
        var pbr_prefixLengthList = document.getElementsByName("Txt_PrefixLenList");
        var ipList = new Array();
        for (var i = 0; i < pbr_selBoxeList.length; i++) {
            var selObj = pbr_selBoxeList[i];
            // 「IPアドレス」項目を取得する。
            var startSubIp = pbr_startSubIpList[i];
            var startSubIpValue = startSubIp.value;
            if (startSubIpValue != "") {
                if (selObj.value == "0") {
                    ipList.push(zeroPadding(startSubIpValue));
                } else {
                    ipList.push(startSubIpValue);
                }
            }
        }
        var fromLength = ipList.length - 1;
        var toLength = ipList.length;
        for (var j = 0; j < fromLength; j++) {
            for (var k = j + 1; k < toLength; k++) {
                if (ipList[j] == ipList[k]) {
                    alert(getMessage("MEM001-0018", new Array(ipList[j])));
                    return false;
                }
            }
        }
        return true;

jsp文:

<table  width="99%" class="contents_detail1 word_break">
                        <tr>
                            <th style="width: 6%" class="contents_detail1_th_center" onmouseover="chgLstTitleBkcolor(this, true)" onmouseout="chgLstTitleBkcolor(this, false)">No.</th>
                            <th style="width: 12%" class="contents_detail1_th_center" onmouseover="chgLstTitleBkcolor(this, true)" onmouseout="chgLstTitleBkcolor(this, false)">選択</th>
                            <th style="width: 40%" class="contents_detail1_th_center" onmouseover="chgLstTitleBkcolor(this, true)" onmouseout="chgLstTitleBkcolor(this, false)">IPアドレス</th>
                            <th style="width: 30%" class="contents_detail1_th_center" onmouseover="chgLstTitleBkcolor(this, true)" onmouseout="chgLstTitleBkcolor(this, false)">Prefix長</th>
                        </tr>
                        <s:iterator value="Lst_ProtocolList" status="protocol">
                            <tr class="contents_detail1_tr_01" onclick="chgTrBkcolor(this)">
                                <td class="contents_detail1_td_right" onmouseover="chgLstBkcolor(this, true)" onmouseout="chgLstBkcolor(this, false)">
                                    <s:property value='#protocol.index + 1'/> 
                                </td>
                                <td class="contents_detail1_td" align="center" onmouseover="chgLstBkcolor(this, true)" onmouseout="chgLstBkcolor(this, false)">
                                    <s:select id="Lst_ProtocolList" name="Lst_ProtocolList" list="protocolList" listKey="key" listValue="value" value="%{Lst_ProtocolList.get(#protocol.index)}" onKeyPress="javascript:keyPressSearch(event);" tabindex="3"/>
                                </td>
                                <td class="contents_detail1_td" onmouseover="chgLstBkcolor(this, true)" onmouseout="chgLstBkcolor(this, false)">
                                    <s:textfield id="Txt_StartSubIpList" name="Txt_StartSubIpList" value="%{Txt_StartSubIpList.get(#protocol.index)}" size="40" maxlength="39" cssStyle="ime-mode: disabled" tabindex="4" />
                                </td>
                                <td class="contents_detail1_td" onmouseover="chgLstBkcolor(this, true)" onmouseout="chgLstBkcolor(this, false)">
                                    <s:textfield id="Txt_PrefixLenList" name="Txt_PrefixLenList" maxlength="3" value="%{Txt_PrefixLenList.get(#protocol.index)}" cssStyle="ime-mode: disabled" tabindex="5"/>
                                </td>
                            </tr>
                        </s:iterator>
                    </table>

后台action:

    /** プロトコルリスト */
    private List<String> Lst_ProtocolList = new ArrayList<String>();

    /** 開始SubscriberIPリスト */
    private List<String> Txt_StartSubIpList = new ArrayList<String>();

    /** Prefix長リスト  */
    private List<String> Txt_PrefixLenList = new ArrayList<String>();

    /** プロトコルリスト(初期値) */
    private String[] Hid_Init_ProtocolList = new String[128];

    /** 開始SubscriberIPリスト (初期値) */
    private String[] Hid_Init_StartSubIpList = new String[128];

    /** Prefix長リスト (初期値) */
    private String[] Hid_Init_PrefixLenList = new String[128];
// PBR IPアドレスレンジ情報の最大インデックス
            int maxPbrIpRangeIndex = -1;
            if (bean.getPbrIpRangeList() != null && bean.getPbrIpRangeList().size() >= 0) {
                maxPbrIpRangeIndex = bean.getPbrIpRangeList().size() - 1;
            }
            
            // DBのIPアドレスレンジ情報を画面に表示する。
            for (int i = 0; i < 128; i++) {
                if (i <= maxPbrIpRangeIndex) {
                    MEDdmRouterChangeVo tmp = bean.getPbrIpRangeList().get(i);
                    Lst_ProtocolList.add(tmp.getProtocol());
                    Txt_StartSubIpList.add(tmp.getStartSubscriberIp());
                    Txt_PrefixLenList.add(tmp.getPrefixLength());
                } else {
                    // 「PBR IPアドレスレンジ」テーブルの中に、該当装置の件数が128件不足の場合
                    Lst_ProtocolList.add(CommonConst.MEA02_PROTOCOL_IPV4);
                    Txt_StartSubIpList.add("");
                    Txt_PrefixLenList.add("");
                }
            }

            // 隠しプロトコルリスト(初期値)
            Lst_ProtocolList.toArray(this.Hid_Init_ProtocolList);
            // 隠し開始SubscriberIPリスト (初期値)
            Txt_StartSubIpList.toArray(this.Hid_Init_StartSubIpList);
            // 隠しPrefix長リスト (初期値)
            Txt_PrefixLenList.toArray(this.Hid_Init_PrefixLenList);

 

posted on 2014-04-22 13:53  不知道取啥名字  阅读(257)  评论(0编辑  收藏  举报