html:
<input type="text" name="amount" bi="总金额(元)" onkeyup="clearNoNum(this)"/>
获取光标位置:
function getCursorPos(obj) {
var CaretPos = 0;
if (document.selection) {
obj.focus();
var Sel = document.selection.createRange();
Sel.moveStart('character', -obj.value.length);
CaretPos = Sel.text.length;
}
else if (obj.selectionStart || obj.selectionStart == '0')
CaretPos = obj.selectionEnd;
return (CaretPos);
}
定位光标:
function setCursorPos(obj, pos) {
if (obj.setSelectionRange) {
obj.focus();
obj.setSelectionRange(pos, pos);
} else if (obj.createTextRange) {
var range = obj.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
正则运算:
function clearNoNum(obj) {
var pos = getCursorPos(obj);
var temp = obj.value;
var sub = temp.substring(0, pos)
var nums = sub.split(',').length-1;
obj.value = obj.value.replace(/[^\d.]/g, "");
obj.value = obj.value.replace(/\.{2,}/g, ".");
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
if (obj.value.indexOf('.') == 0) {
obj.value = '0' + obj.value
}
if (obj.value.indexOf(".") < 0 && obj.value != "") {
obj.value = parseFloat(obj.value);
}
pos = pos - nums;
if(pos < 0) { pos = 0; }
setCursorPos(obj, pos);
}