金额文本框限制的详细实例

<!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 numOnKeyDown() {
            var k = window.event.keyCode;
            return isValidNum(k);
        }
        //判断是否为数字或允许使用的键。
        function isValidNum(k) {
            return (k == 9 || k == 8 || k == 46 || k == 14 || k == 189 || k == 109 || k == 190 || k == 110 || (k >= 48 && k <= 57) || (k >= 96 && k <= 105) || (k >= 37 && k <= 40));
        }
        //禁止粘贴非数字的字符串。
        function numPaste() {
            var text = window.clipboardData.getData("Text");
            for (var i = 0; i < text.length; i++) {
                var ascii = text.charCodeAt(i); //用charCodeAt取得ASCII码
                if (!isValidNum(ascii)) {
                    return false;    
                }
            }
        }
        
        //添加千分位。
        function addCommafy(str) {
            var amount = document.getElementById("amount");
            amount.style.textAlign = "right";
            var regex = /\d{1,3}(?=(\d{3})+$)/g;
            var n1 = str.replace(/^(\d+)((\.\d+)?)$/, function (s, s1, s2) { return s1.replace(regex, "$&,") + s2; });
            return n1;
        }
        //移除千分位
        function removeCommafy() {
            var amount = document.getElementById("amount");
            amount.style.textAlign = "left";
            amount.value = amount.value.replace(/,/g, '');
        }
    </script>
    <style type="text/css">
        #amount{ime-mode:disabled }
    </style>
</head>
<body>
    输入金额:<br />
    <input id="amount" type="text" onkeydown="return numOnKeyDown();" onblur="this.value=addCommafy(this.value);" onpaste="return numPaste();" onfocus="removeCommafy()"/>
</body>
</html>
posted @ 2011-03-25 00:18  山之松  阅读(201)  评论(0编辑  收藏  举报