亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

使用 SpreadJS制作票據(jù)金額輸入框

junfeng777 / 3631人閱讀

摘要:在類似金額的票據(jù)中,一個(gè)單元格僅允許填寫(xiě)一位數(shù)字,每一個(gè)單元格都對(duì)應(yīng)著一個(gè)數(shù)字位,例如千位萬(wàn)位百位等。例如在用戶填寫(xiě)錯(cuò)誤時(shí),如何撤銷(xiāo)或刪除當(dāng)頁(yè)面上還有其他數(shù)據(jù)區(qū)域時(shí),如何做到自動(dòng)后移單元格不會(huì)超出金額區(qū)域這些問(wèn)題大家可以思考補(bǔ)充。

前言 | 問(wèn)題背景

本例是由一位用戶提出的實(shí)際需求。在類似金額的票據(jù)中,一個(gè)單元格僅允許填寫(xiě)一位數(shù)字,每一個(gè)單元格都對(duì)應(yīng)著一個(gè)數(shù)字位,例如千位、萬(wàn)位、百位等。

據(jù)此需求進(jìn)行分析,可知需要實(shí)現(xiàn)以下幾點(diǎn)基本操作:

需要把對(duì)應(yīng)表格區(qū)域保護(hù)并鎖定,不能直接允許用戶編輯單元格內(nèi)容,否則不能保證用戶僅輸入一位數(shù)字;

需要針對(duì)鍵盤(pán)事件進(jìn)行監(jiān)聽(tīng),通過(guò)事件代碼為單元格賦值,過(guò)濾掉除數(shù)字外的其它字符;

在一個(gè)單元格填寫(xiě)完畢后,活動(dòng)單元格自動(dòng)后移到下一個(gè)單元格上,不需要鼠標(biāo)點(diǎn)選或鍵盤(pán)切換。

本文基于SpreadJS V12版本,下載請(qǐng)點(diǎn)擊。

示例代碼分析

由以上分析可知,首先需要對(duì)表單進(jìn)行保護(hù)設(shè)置,同時(shí)設(shè)置一下樣式和表頭,如下所示:

var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount : 1 });
var sheet = spread.getActiveSheet();
// 設(shè)置表單保護(hù)
sheet.options.isProtected = true;
sheet.setRowCount(5);
sheet.setColumnCount(9);
sheet.defaults.rowHeight = 60;
sheet.defaults.colWidth = 40;
var style = sheet.getDefaultStyle();
// 設(shè)置默認(rèn)樣式的邊框
style.borderLeft =new GC.Spread.Sheets.LineBorder("black",GC.Spread.Sheets.LineStyle.thin);
style.borderTop = new GC.Spread.Sheets.LineBorder("black",GC.Spread.Sheets.LineStyle.thin);
style.borderRight = new GC.Spread.Sheets.LineBorder("black",GC.Spread.Sheets.LineStyle.thin);
style.borderBottom = new GC.Spread.Sheets.LineBorder("black",GC.Spread.Sheets.LineStyle.thin);
// 設(shè)置對(duì)齊方式
style.hAlign = GC.Spread.Sheets.HorizontalAlign.center;
style.vAlign = GC.Spread.Sheets.VerticalAlign.center;
sheet.setDefaultStyle(style);
var arr = ["百","十","萬(wàn)","千","百","十", "元", "角", "分"];
for(let i=0; i

鍵盤(pán)事件需要綁定到div上,先進(jìn)行字符過(guò)濾,再執(zhí)行填值和移動(dòng)單元格操作。如下所示:

$("#ss").keydown(function (event) {
    // 判斷是否是鍵盤(pán)數(shù)字鍵
    var kc = event.keyCode;
    console.log(kc);
    var keyValue = -1;
    if(kc >= 48 && kc <= 57){
        keyValue = kc - 48;
    }else if(kc >= 96 && kc <= 105){
        keyValue = kc - 96;
    }
    if(keyValue >= 0){
        var sel = sheet.getSelections();
        if(sel && sel.length > 0){
            var row = sel[0].row;
            var col = sel[0].col;
            sheet.setValue(row, col, keyValue);
            // 調(diào)用命令向后移動(dòng)一個(gè)單元格
            spread.commandManager().execute({
                cmd: "moveToNextCell",
                sheetName: sheet.name()
            });
        }
    }
});

需要完整示例,請(qǐng)點(diǎn)擊此處下載。

補(bǔ)充討論

本例僅僅展示了最基礎(chǔ)的實(shí)現(xiàn)思路,仍有很多沒(méi)有完善的地方,由于篇幅因素,僅在此處進(jìn)行討論補(bǔ)充一下。例如:在用戶填寫(xiě)錯(cuò)誤時(shí),如何撤銷(xiāo)或刪除?當(dāng)頁(yè)面上還有其他數(shù)據(jù)區(qū)域時(shí),如何做到自動(dòng)后移單元格不會(huì)超出金額區(qū)域?這些問(wèn)題大家可以思考補(bǔ)充。

SpreadJS | 下載試用

純前端表格控件SpreadJS,是市面上布局與功能都與 Excel 高度類似的一款表格控件,全中文操作界面,適用于.NET、Java、移動(dòng)端等多個(gè)平臺(tái)的類 Excel 數(shù)據(jù)開(kāi)發(fā),備受華為、中通、民航飛行學(xué)院等國(guó)內(nèi)知名企業(yè)客戶青睞。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/103111.html

Failed to recv the data from server completely (SIZE:0/8, REASON:closed)