日期:2014-05-16  浏览次数:20398 次

JS在用户输入的时候格式化数字为财务数字,如"123,123,1.123,1"
String.prototype.replaceAll = function(s1, s2) {
	return this.replace(new RegExp(s1, "gm"), s2);
}
/**
 * 调用的时候必须使用onkeypress事件
 * 目前代码为优化,为考虑特殊按键,如<-,tab键等
 * 
 */
function rep(obj) {
	document.getElementById("lb").innerHTML = "";
	var new_int;
	var old_int = obj.value.replaceAll(",", "");
	var len;
	// 不能直接输入","符号
	if (event.keyCode == 44) {
		return false;
	}
	// 只能数一个小数点
	if (event.keyCode == 46) {
		if (old_int.indexOf(".") > 0) {
			return false;
		} else {
			// 处理用户在刚好输入四位数字,如123,4后删除最后一位123,直接按下小数点"."
			var bool = obj.value.indexOf(",") + 1 == obj.value.length;
			if (bool) {
				obj.value = obj.value.replace(",", ".");
				return false;
			}
		}
	}
	//设置 有小数点时格式化的len
	if (old_int.indexOf(".") > 0) {
		len = old_int.substring(old_int.indexOf("."), old_int.length).length
				- 1;
	} else {//设置 其他情况格式化的len
		len = old_int.length;
	}
	var t_val = old_int + String.fromCharCode(event.keyCode);
	if (!(/^-?\d+\.{0,}\d{0,}$/.test(t_val))) {
		document.getElementById("lb").innerHTML = "只能输入数字";
		return false;
	}

	// 根据len判断是否加格式化 (加",")
	if ((len > 0) & (len % 3 == 0) & (event.keyCode != 46)) {
		if (obj.value.indexOf(",") + 1 != obj.value.length) {
			new_int = obj.value + ",";
			obj.value = new_int;
		}
	}
}
/**
 * 提交的时候,要获取正确的值,直接替换掉里面的所有","就行
 * @param {} obj
 */
function onsubmit(obj) {
	alert(obj.value.replaceAll(",", ""));
}

?