JavaScript常用方法
2013-05-04 14:55 hduhans 阅读(143) 评论(0) 收藏 举报1.格式化字符串,输出人民币格式 如 "1000"=>"1,000.00"
View Code
//格式化字符串 转换成人民币 如"1000"=>"1,000.00" function outputMoney(number) { number = number.replace(/\,/g, ""); if (number == "") return ""; if (number < 0) { return '-' + outputDollars(Math.floor(Math.abs(number) - 0) + '') + outputCents(Math.abs(number) - 0); } else { return outputDollars(Math.floor(number - 0) + '') + outputCents(number - 0); } } function outputDollars(number) { if (number.length <= 3) { return (number == '' ? '0' : number); } else { var mod = number.length % 3; var output = (mod == 0 ? '' : (number.substring(0, mod))); for (i = 0; i < Math.floor(number.length / 3); i++) { if ((mod == 0) && (i == 0)) { output += number.substring(mod + 3 * i, mod + 3 * i + 3); } else { output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3); } } return (output); } } function outputCents(amount) { amount = Math.round(((amount) - Math.floor(amount)) * 100); return (amount < 10 ? '.0' + amount : '.' + amount); }
2.字符串替换所有(默认replace只替换匹配的第一项)
//替换字符串 String.prototype.replaceAll = function (s1, s2) { return this.replace(new RegExp(s1, "gm"), s2); }
3.数字金额转大写金额汉字,如165,491.36=>拾陆万伍仟肆佰玖拾壹元叁角陆分
//金额转汉字 function chineseNumber(num) { if (isNaN(num) || num > Math.pow(10, 12)) return ""; var cn = "零壹贰叁肆伍陆柒捌玖"; var unit = new Array("拾佰仟", "分角"); var unit1 = new Array("万亿", ""); var numArray = num.toString().split("."); var start = new Array(numArray[0].length - 1, 2); function toChinese(num, index) { var num = num.replace(/\d/g, function ($1) { return cn.charAt($1) + unit[index].charAt(start-- % 4 ? start % 4 : -1); }) return num; } for (var i = 0; i < numArray.length; i++) { var tmp = ""; for (var j = 0; j * 4 < numArray[i].length; j++) { var strIndex = numArray[i].length - (j + 1) * 4; var str = numArray[i].substring(strIndex, strIndex + 4); var start = i ? 2 : str.length - 1; var tmp1 = toChinese(str, i); tmp1 = tmp1.replace(/(零.)+/g, "零").replace(/零+$/, ""); tmp1 = tmp1.replace(/^壹拾/, "拾"); tmp = (tmp1 + unit1[i].charAt(j - 1)) + tmp; } numArray[i] = tmp; } numArray[1] = numArray[1] ? numArray[1] : ""; numArray[0] = numArray[0] ? numArray[0] + "元" : numArray[0], numArray[1] = numArray[1].replace(/^零+/, ""); numArray[1] = numArray[1].match(/分/) ? numArray[1] : numArray[1]; return numArray[0] + numArray[1]; }
4.判断金额类型,只允许输入数字和一个小数点,且小数点后保留2位,input文本框输入金额格式判断
<script>
function chkPrice(obj){
//必须数字开头
obj.value = obj.value.replace(/[^\d.]/g,"");
//第一位不能为.
obj.value = obj.value.replace(/^\./g,"");
//保证只有出现一个.而没有多个.
obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
//保留2位小数
var n=obj.value.indexOf(".")
if(n!=-1){
var l=obj.value.substr(n+1);
if(l.length>2) obj.value=obj.value.substring(0,n+3);
}
}
function chkLast(obj){
// 如果出现非法字符就截取掉
if(obj.value.substr((obj.value.length - 1), 1) == '.')
obj.value = obj.value.substr(0,(obj.value.length - 1));
//如果是整数 加上".00"
var n=obj.value.indexOf(".");
if(n==-1){
obj.value=obj.value+".00";
}else if(obj.value.substr(n+1).length==1){ //如果小数点只有一位 加一个"0"
obj.value=obj.value+"0";
}
}
</script>
<input type="text" name="txtFee" id="txtFee" class="common" onkeyup="chkPrice(this);" onblur="chkLast(this)" onpaste="javascript: return false;"/>
5.Js之Trim()方法,去除首尾空格," abcd " => "abcd"
//去除字符串首尾空格 function Trim(str) { str = String(str); function LTrim(str) { var i; for (i = 0; i < str.length; i++) { if (str.charAt(i) != " " && str.charAt(i) != " ") break; } str = str.substring(i, str.length); return str; } function RTrim(str) { var i; for (i = str.length - 1; i >= 0; i--) { if (str.charAt(i) != " " && str.charAt(i) != " ") break; } str = str.substring(0, i + 1); return str; } return LTrim(RTrim(str)); }
6.Js通过字符串动态调用方法
function pap(str){ document.write("call function pap,params is "+str); } var funName = "pap"; var funParams = "hans"; var fn = window[funName]; //动态调用方法一 fn(funParams); //动态调用方法二 eval("pap('good')");
7.Js正则判断字符串是否为数字
var isNum = function(str){ var rex = /^\d+$/; return rex.test(str); }
8.Js正则获取内容
alert('<head>csdn</head>'.match(/<head>([\s\S]*?)<\/head>/)[1]);

浙公网安备 33010602011771号