javascript—金額文字框練習

來源:互聯網
上載者:User
javascript---金額文字框練習2011-10-15 18:06

財務相關係統中涉及到金額的文字框有如下要求:
• 進入金額文本文字框不使用中文IME
• 不能輸入非數字
• 焦點在文字框中時文字框靠左對齊;焦點離開文字框時文字框靠右對齊,顯示千分位

     1.禁用IME:,禁止鍵入非法值,只有這些才能被鍵入(k == 9) || (k == 13) ||(k==46)||(k==8)||(k==189)||(k==109)||(k==190)||(k==110)|| (k>=48 &&k<=57)||(k>=96 && k<=105)||(k>=37 && k<=40)。

 onkeydown="return numonKeyDown()" 不要寫成onkeydown="numonKeyDown()" 區分事件響應函數
和事件響應函數調用的函數。

    2.禁止粘貼(偉大的Tester),<input onpaste="return false;" ,太暴力,應該只是禁
止粘貼非法值。在onpaste中通過clipboardData.getData('Text')取到粘貼板中的值,然後遍曆每個字元,看是否是合法的值,如果全部是合法值才允許粘貼,只要有一個非法值就禁止粘貼。charAt、charCodeAt 添加千分位的方法,見備忘  

   3.焦點在的時候靠左對齊沒有千分位,焦點不在時靠右對齊千分位。
this.style.textAlign='right'

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        function initEvent() {
            var txtAmount = document.getElementById("txtAmount");
            txtAmount.onkeydown = onkeydownEvent; //鍵盤輸入時效果,限制非法字元輸入
            txtAmount.onblur = onblurEvent;//焦點離開時的效果(數字向靠右對齊)
            txtAmount.onpaste = function () {
                var text = clipboardData.getData("text");
                if (valid(text)) {
                    clipboardData.setData("text", text); 
                }
                else {  
                    return false;
                }
            };    //禁止粘貼1.4
        }
        function valid(txt) {
            var i = 0;
            var len = txt.length;
            for (i = 0; i < len; i++) {
                var checkTxt = txt.charCodeAt(i); //使用charCodeAt方法,方法可返回指定位置的字元的 Unicode 編碼。這個傳回值是 0 - 65535 之間的整數。
                if (checkTxt == 37 || checkTxt == 8 || checkTxt == 39 || checkTxt == 46 || checkTxt == 190 || checkTxt == 110 || (checkTxt >= 48 && checkTxt <= 57) || (checkTxt >= 96 && checkTxt <= 105)) {
                    continue;

                }
                else {
                    return false;
                }
            }
            return true;
           
        }
        function onkeydownEvent() {
            if (event.keyCode == 37 ||event.keyCode==8|| event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190 || event.keyCode == 110 || (event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {
            }
            else {
                return false;
            }
        }
        function onblurEvent() {
          //  var txtAmount = document.getElementById("txtAmount");
         this.style.textAlign = "right";
         // txtAmount.value = txtAmount.value + '';
         this.value = commafy(this.value);
        }

        function commafy(n) {
            n = n + "";
            var re = /(-?\d+)(\d{3})/;
            while (re.test(n)) {
                n = n.replace(re, "$1,$2");
            }
            return n;
           // var n1 = n.replace(/^(\d+)((\.\d+)?)$/, function (s, s1, s2) { return s1.replace(re, "$1,$2") + s2; });
            //return n1;
        }
   
    </script>
</head>
<body onload="initEvent()">
 <input type="text" id="txtAmount" onclick="this.style.textAlign='left';this.value=this.value.replace(/,/g,'');" />
</body>
</html>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.