天天看點

Javascript中利用window.event.keyCode 實作金融文本框禁用非法輸特效!

主要就是為了監聽鍵盤按下的是哪個鍵,并且轉成ASCII碼;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

    <title>window.event.keyCode</title>

</head>

<body onkeydown=" alert(window.event.keyCode)">

    <input id="txtCode" type="text" />

</body>

</html>

那麼如何用回車代替小鍵盤的回車呢?首先我們要知道,回車的ASCII碼是13 ,TAB鍵的ASCII碼是9那就好辦啦;

    <title>使用回車代替TAB鍵</title>

<body onkeydown="if(window.event.keyCode==13){ window.event.keyCode=9}">

    <input id="txtCode2" type="text" />

在上面的代碼中我們使用了keyCode來實作回車代替TAB鍵,隻是簡單的做了一個判斷,如果當按下的是回車(13),我們就把TAB(9)的值賦給它(騙騙計算機),這些小小的細節積累起來,也是一批不小的财富吧!

 下面接着寫點東西,算是一個完整的示例吧;一個金融軟體中文本框隻能輸入數字,和方向鍵,删除鍵等(代碼中不是很嚴謹,僅供參考)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <title>金融軟體文本框禁用非法字元特效-2011-04-26</title>

    <style type="text/css">

        .ime

        {

            ime-mode: disabled; /**隻對IE有效,禁用輸入法切換**/

            width:300px;

        }

    </style>

    <script language="javascript" type="text/javascript">

        function isValiNum(k) {

            return (k == 9 || k == 13 || k == 46 || k == 8 || k == 189 || k == 190 || k == 110 || (k >= 48 && k <= 57) || (k >= 96 && k <= 105) || (k >= 37 && k <= 40));

        function numKeyDown() {

            var k = window.event.keyCode;

            //判斷輸入字元是否合法;調用isValiNum函數;

            return isValiNum(k);

        function numPaste() {

            //從剪切闆中擷取資料;

            var text = window.clipboardData.getData("Text");

            for (var i = 0; i < text.length; i++) {

                var asc = text.charCodeAt(i);   //轉成ASCII值;

                if (!isValiNum(asc)) {

                    return false;

                }

            }

        //自動給輸入的資料加逗号;

        function commafy(n) {

            var re = /\d{1,3}(?=(\d{3})+$)/g;

            var n1 = n.replace(/^(\d+)((\.\d+)?)$/, function (s, s1, s2) { return s1.replace(re, "$&,") + s2; });

            return n1;

    </script>

<body>

    <input id="txtCode" type="text" class="ime" onpaste="return numPaste()" onkeydown="return numKeyDown()" onfocus="this.style.textAlign='left'; this.value=this.value.replace(/,/g,'');" onblur="this.style.textAlign='right';this.value=commafy(this.value)" />

繼續閱讀