/**
* $("#area").decimalinput();//文本框只能输入2位小数
*/
$.fn.decimalinput = function() {
$(this).css("ime-mode", "disabled");
this.bind("keypress", function(e) {
if (e.charCode === 0) return true; //非字符键 for firefox
var code = (e.keyCode ? e.keyCode : e.which); //兼容火狐 IE
if (code >= 48 && code <= 57) {
var pos = getCurPosition(this);
var selText = getSelectedText(this);
var dotPos = this.value.indexOf(".");
if (dotPos > 0 && pos > dotPos) {
if (pos > dotPos + 2) return false;
if (selText.length > 0 || this.value.substr(dotPos + 1).length < 2)
return true;
else
return false;
}
return true;
}
//输入"."
if (code == 46) {
var selText = getSelectedText(this);
if (selText.indexOf(".") > 0) return true; //选中文本包含"."
else if (/^[0-9]+\.$/.test(this.value + String.fromCharCode(code)))
return true;
}
return false;
});
this.bind("blur", function() {
if (this.value.lastIndexOf(".") == (this.value.length - 1)) {
this.value = this.value.substr(0, this.value.length - 1);
} else if (isNaN(this.value)) {
this.value = "";
}
if (this.value)
this.value = parseFloat(this.value).toFixed(2);
$(this).trigger("input");
});
this.bind("paste", function() {
if (window.clipboardData) {
var s = clipboardData.getData('text');
if (!isNaN(s)) {
value = parseFloat(s);
return true;
}
}
return false;
});
this.bind("dragenter", function() {
return false;
});
this.bind("keyup", function() {
});
this.bind("propertychange", function(e) {
if (isNaN(this.value))
this.value = this.value.replace(/[^0-9\.]/g, "");
});
this.bind("input", function(e) {
if (isNaN(this.value))
this.value = this.value.replace(/[^0-9\.]/g, "");
});
};
//获取当前光标在文本框的位置
function getCurPosition(domObj) {
var position = 0;
if (domObj.selectionStart || domObj.selectionStart == '0') {
position = domObj.selectionStart;
}
else if (document.selection) { //for IE
domObj.focus();
var currentRange = document.selection.createRange();
var workRange = currentRange.duplicate();
domObj.select();
var allRange = document.selection.createRange();
while (workRange.compareEndPoints("StartToStart", allRange) > 0) {
workRange.moveStart("character", -1);
position++;
}
currentRange.select();
}
return position;
}
//获取当前文本框选中的文本
function getSelectedText(domObj) {
if (domObj.selectionStart || domObj.selectionStart == '0') {
return domObj.value.substring(domObj.selectionStart, domObj.selectionEnd);
}
else if (document.selection) { //for IE
domObj.focus();
var sel = document.selection.createRange();
return sel.text;
}
else return '';
}