• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

        如何在VS.NET/C# Builder開發(fā)的頁面中不妨完成DOS下錄入數(shù)據(jù)回車換行的技巧

        如何在VS.NET/C# Builder開發(fā)的頁面中不妨完成DOS下錄入數(shù)據(jù)回車換行的技巧

        更新時間:2022-05-09 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        如何在VS.NET/C# Builder開發(fā)的網(wǎng)頁中也能實現(xiàn)DOS下錄入數(shù)據(jù)回車換行的功能
        北京煤炭科學(xué)研究總院經(jīng)濟與信息研究所 丁報圣

        在DOS年代,錄入數(shù)據(jù)時我們習慣了在錄入完一行數(shù)據(jù)后敲一個回車轉(zhuǎn)入下一行的數(shù)據(jù)錄入。昔日DOS的輝煌已經(jīng)成為過去,如今更加友好易用的GUI圖形操作界面Windows已經(jīng)進入了我們的日常生活。
        1996年Windows95的出現(xiàn)是軟件史上的一次偉大革命。Windows 是美國微軟公司開發(fā)的一種圖形方式的操作系統(tǒng),它的出現(xiàn)克服了 DOS 中難記的一些命令,使計算機與人更親近,只要輕輕點擊鼠標,計算機就會完成一個動作。同時windows也改變了原先DOS下錄入數(shù)據(jù)敲回車的方式,現(xiàn)在我們?nèi)羰窃阡浫霐?shù)據(jù)時希望光標跳到下一行或下一個輸入框則只能按鍵盤上的TAB鍵或用鼠標點擊下一個輸入框。這個改變對于沒有接觸過DOS操作系統(tǒng)的計算機用戶也許沒有什么大的影響,但是對于從DOS下轉(zhuǎn)過來的的計算機用戶卻是一個雞肋;特別是我們的數(shù)據(jù)錄入人員,在DOS年代已經(jīng)習慣在錄入一行數(shù)據(jù)時敲一下回車繼續(xù)下一行數(shù)據(jù)的錄入。能不能眷顧一下這些老用戶的習慣也是我們開發(fā)人員應(yīng)該考慮的事情。
        筆者在前不久的一個項目中就遇到了這樣的問題:用戶要求我們的前臺錄入頁面提供支持回車換行的功能。做過開發(fā)的人都知道在傳統(tǒng)windows應(yīng)用程序中實現(xiàn)回車換行其實并不太難,我們可以通過截獲鍵盤的回車按鍵值,然后通過發(fā)送消息使錄入界面中的下一控件(如:文本框輸入框等)獲得輸入焦點來達到這個目的。在WEB頁面中我們也可以通過腳本(JAVASCRIPT或VBSCRIPT)語言設(shè)置WEB控件的焦點來實現(xiàn)。
        在傳統(tǒng)的ASP或JSP/PHP中編寫的WEB應(yīng)用程序中實現(xiàn)回車換行的功能時,我們通常的做法就是在控件的OnkeyPress事件、OnClick事件或頁面中的OnSubmit等事件中寫上一段JAVASCRIPT或VBSCRIPT代碼捕捉到鍵盤回車的鍵值,然后人為指定跳轉(zhuǎn)順序?qū)崿F(xiàn)回車換行,這種做法缺點只能適用于頁面控件元素很少項目不大的場合,一旦頁面控件元素或該類文件很多時,這種人工方式必然要消耗很大的工作量。能不能有一個行之有效的辦法使我們一勞永逸?這就是本文筆者要討論的內(nèi)容。諸位看官莫急,容我慢慢道來:
        我們的項目是用VB.NET開發(fā)的,前臺錄入界面是VB.NET程序編譯后生成的HTML頁面,在瀏覽器中運行。VB.NET開發(fā)的程序最大的好處是程序代碼可以和界面相隔離,也就是相互獨立;但是用VB.NET開發(fā)的程序編譯后生成的HTML錄入界面中的控件元素名稱是很難確定的,雖然也會具有一定的命名規(guī)則。在編譯前我們是無法得知編譯生成頁面上的可錄入控件元素名稱的。
        這樣一來我們就碰到了一個問題,難道說我們要實現(xiàn)DOS下的回車換行功能就只有打開一個個的ASPX文件查看其中的元素名稱,然后按ASP或JSP/PHP中的做法寫相應(yīng)的JAVASCRIPT或VBSCRIPT代碼了嗎?這顯然是一個讓人暈倒的事實;我們的這個項目有上百個ASPX文件,要打開上百個文件一一按ASP或JSP/PHP中的做法寫下JAVASCRIPT或VBSCRIPT回車實現(xiàn)代碼簡直就是奇聞。筆者通過查MSDN和反復(fù)實踐找到了解決方法。
        下面我將用JavaScript腳本語言為例來解決這個問題,在寫代碼前我得向大家介紹一些相關(guān)知識;瀏覽器中瀏覽的頁面文件在JavaScript中稱之為一個文檔對象(DOM)。在 JavaScript 能夠涉及的范圍內(nèi)有如下幾個“大”對象:Window, Document, Location, Navigator, Screen, History 等。Window對象是Document、Location和History對象的父對象。
        圍繞我們要解決的問題,這里我們重點提一下Document、Form、Elements三個對象及Onkeypress事件,Document 文檔對象:是指描述當前窗口或指定窗口對象的文檔。它包含了文檔從<head>到</body>的內(nèi)容。用法:document (當前窗口)或 <窗口對象>.document (指定窗口) ; Form 對象:document.forms[] 是一個數(shù)組,包含了文檔中所有的表單Form ;Elements對象:為表單元素對象,<表單對象>.elements 是一個數(shù)組,包含了該表單所有的對象;Onkeypress事件是一個鍵盤事件,是在用戶按下鍵盤上的鍵時引發(fā)的事件。通過這三大對象再配合Onkeypress事件就可以完成現(xiàn)我們的要求;
        下面是最終的實現(xiàn)代碼清單:
        var JumpTypeArray =new Array("text","password","textarea","checkbox","radio",
        "select","select-one","select-multiple","file")//引用頁面上可獲得焦點元素類型
        var DebarTypeArray =new Array("submit","reset","button","checkbox","radio",
        "select","select-one","select-multiple","hidden")//引用頁面上需排除元素類型
        function inStrArray(src,dec)
        {//檢查給定串是否在指定字符串數(shù)組中,如在返回索引號,否返回-1;
        for (var i=0 ; i<dec.length; i++)
        {
        if (src==dec[i])
        {
        return i;//定位成功,返回索引號
        break;
        }
        }
        return -1; //定位失敗,返回-1
        }
        function checkCR(evt)
        {//回車響應(yīng)函數(shù)
        var evt = (evt) ? evt : ((event) ? event : null);
        var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        var frm=document.forms[0]; //指定FORM名稱為頁面中的第一個
        if ((evt.keyCode == 13) && (inStrArray(node.type,JumpTypeArray)!=-1))
        {//判斷當前對象是否為可輸入對象,對象類型數(shù)組:JumpTypeArray
        for (var i = 0 ; i < frm.elements.length; i++)
        {//for begin
        if (frm.elements[i].name==node.name)
        {//定位當前對象
        if ((i+1)< frm.elements.length)
        {//對象數(shù)組索引越位判斷
        if (inStrArray(frm.elements[i+1].type,JumpTypeArray)!=-1)
        { //判斷當前對象下一個對象是否為可輸入組件,對象類型數(shù)組:JumpTypeArray
        frm.elements[i+1].focus();//設(shè)置焦點
        if (inStrArray(frm.elements[i+1].type,DebarTypeArray)==-1)
        { //過濾不可選中文本對象,對象類型數(shù)組:DebarTypeArray
        frm.elements[i+1].select();//選中組件文本內(nèi)容
        }
        }
        return false;//禁止提交表單內(nèi)容
        break;
        }
        else
        {//提交表單內(nèi)容
        return true;
        break;
        }
        }
        }//end for
        }
        }
        document.onkeypress = checkCR;

        引用說明:將上面的代碼存成文件,如:WebEnter.js,然后在要實現(xiàn)回車換行的頁面中寫上:
        <script language="JavaScript" src="path+WebEnter.js"></script> 即可。
        Path:是WebEnter.js文件所在路徑。

        適用環(huán)境:Windows9x/NT/2000/XP+ASP/JSP/PHP/ASP.NET+IE4.x(及以上版本)

        注意事項:
        1、引用頁面中不能有多個表單(Form)。
        2、引用頁面中不允許有重名對象(object)。

        調(diào)用例子:http://dbs.myrice.com/dbs/Demo.html

        最后需要說明的是:當引用頁面在NS系列瀏覽器中瀏覽時,以上代碼需修改,因為在NS中的瀏覽器對象和IE中的對象是有一點區(qū)別的,這個就留給讀

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 亚洲人色大成年网站在线观看| 亚洲精品美女久久777777| 黄+色+性+人免费| 成人午夜视频免费| 免费jlzzjlzz在线播放视频| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 0588影视手机免费看片| 真实乱视频国产免费观看| 免费少妇a级毛片| 免费无码国产V片在线观看| 成全高清在线观看免费| 国产又黄又爽又猛免费app| 国产成人精品日本亚洲专区| 亚洲神级电影国语版| 在线观看亚洲精品专区| 99在线观看视频免费| 国产乱子伦精品免费女| 亚洲AV成人一区二区三区AV| 99亚洲乱人伦aⅴ精品| 国国内清清草原免费视频99| 中文字幕无码亚洲欧洲日韩| 久久午夜夜伦鲁鲁片免费无码| 国产传媒在线观看视频免费观看| 国产亚洲精品美女| 久久久久亚洲AV综合波多野结衣| 在线亚洲精品视频| 亚洲国产高清精品线久久| 精品国产日韩久久亚洲| 又黄又爽一线毛片免费观看| 伊人免费在线观看| 国产成人精品曰本亚洲79ren| 国产成人精品无码免费看| 亚洲AV无码成人专区| 亚洲高清免费在线观看| 亚洲AV永久青草无码精品| 七次郎成人免费线路视频| 成熟女人特级毛片www免费| 麻豆一区二区三区蜜桃免费| 国产成人3p视频免费观看| 亚洲av无码片vr一区二区三区| 久久精品a一国产成人免费网站|