金额文本框限制的详细实例
<!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>