//带有小数的数字掩码 
var NumberMaskConfig = ...{
defaultTextAlign : "center",
defaultAutoNull : true,
defaultFormatString : "##.dd",
defaultHiddenFormatString : "##.dd",
// 可用的功能键值数组.
WORK_KEY : [8, 33, 34, 35, 36, 37, 38, 39, 40, 46, 144],
// 数字键值数组.
NUMBER_KEY : [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105]
};

function NumberMask(textId, formatString, isAutoNull, hiddenTextId, hiddenNumberFormatString) ...{
if ( textId == null ) ...{
return;
}
this.element = textId;
this.element.style.textAlign = NumberMaskConfig.defaultTextAlign;
this.document = textId.ownerDocument || textId.document;
this.window = this.document.defaultView || this.document.parentWindow;
this.hiddenElementId = hiddenTextId;
if ( isAutoNull == null ) ...{
isAutoNull = NumberMaskConfig.defaultAutoNull;
}
this.autoNull = isAutoNull;
var oThis = this;
this._onKeyDown = function (e) ...{
if ( e == null ) ...{
e = this.window.event;
}
oThis.onKeyDown(e);
};
this._onBeforePaste = function (e) ...{
if ( e == null ) ...{
e = this.window.event;
}
oThis.onBeforePaste (e);
};
this._onBeforeCut = function (e) ...{
if ( e == null ) ...{
e = this.window.event;
}
oThis.onBeforeCut (e);
};
this._onContextMenu = function (e) ...{
if ( e == null ) ...{
e = this.window.event;
}
oThis.onContextMenu (e);
};
this._onFocus = function (e) ...{
if ( e == null ) ...{
e = this.window.event;
}
oThis.onFocus (e);
};
this._onBlur = function (e) ...{
if ( e == null ) ...{
e = this.window.event;
}
oThis.onBlur (e);
};
this.initMask( formatString || NumberMaskConfig.defaultFormatString );

if ( this.hiddenElementId != null ) ...{
this.initHiddenMask( hiddenNumberFormatString || NumberMaskConfig.defaultHiddenFormatString );
}
this.initEvent();
this.initValue(this.element.value);
}
//初始化格式参数.
//参数:formatString 格式化字符串.
NumberMask.prototype.initMask = function ( formatString ) ...{
// 校验格式字符串,若有误,设置为默认格式.
if ( ( formatString.indexOf("#") >= 0 && formatString.indexOf("#") != formatString.lastIndexOf("#") - 1 )
|| ( formatString.indexOf("d") >= 0 && formatString.indexOf("d") != formatString.lastIndexOf("d") - 1 ) ) ...{
formatString = NumberMaskConfig.defaultFormatString;
}
this.maskString = formatString;
this.integerIndex = formatString.search("##");
this.doubleIndex = formatString.search("dd");
};
//初始化隐藏项的格式参数.
//参数:formatString 格式化字符串.
NumberMask.prototype.initHiddenMask = function ( formatString ) ...{
// 校验格式字符串,若有误,设置为默认格式.
if ( ( formatString.indexOf("#") >= 0 && formatString.indexOf("#") != formatString.lastIndexOf("#") - 1 )
|| ( formatString.indexOf("d") >= 0 && formatString.indexOf("d") != formatString.lastIndexOf("d") - 1 ) ) ...{
formatString = NumberMaskConfig.defaultHiddenFormatString;
}
this.hiddenMaskString = formatString;
this.hiddenintegerIndex = formatString.search("##");
this.hiddendoubleIndex = formatString.search("dd");
};
//初始化事件.
NumberMask.prototype.initEvent = function () ...{
if ( typeof this.element.addEventListener != "undefined" ) ...{
this.element.addEventListener("keydown", this._onKeyDown, false);
this.element.addEventListener("beforepaste", this._onBeforePaste, false);
this.element.addEventListener("beforecut", this._onBeforeCut, false);
this.element.addEventListener("contextmenu", this._onContextMenu, false);
this.element.addEventListener("focus", this._onFocus, false);
this.element.addEventListener("blur", this._onBlur, false);
} else if ( typeof this.element.attachEvent != "undefined" ) ...{
this.element.attachEvent("onkeydown", this._onKeyDown);
this.element.attachEvent("onbeforepaste", this._onBeforePaste);
this.element.attachEvent("onbeforecut", this._onBeforeCut);
this.element.attachEvent("oncontextmenu", this._onContextMenu);
this.element.attachEvent("onfocus", this._onFocus);
this.element.attachEvent("onblur", this._onBlur);
}
};
// 初始化默认值.
NumberMask.prototype.initValue = function (aValue) ...{
if ( this.autoNull && (aValue.length <= 0 || aValue == null )) ...{
this.element.value = "";
} else ...{
this.element.value = this.formatTheNumber(aValue);
if ( this.autoNull && !this.isValidNumber() ) ...{
this.element.value = "";
}
}
this.setHiddenValue();
};
// 判断键入的是不是数字.
// 参数:pressKeyCode 从键盘输入值.
// 返回:true 是数字;false 不是数字.
NumberMask.prototype.isNumberOrMinus = function ( pressKeyCode ) ...{
if ( pressKeyCode == null || typeof(pressKeyCode) != "number" ) ...{
return false;
}
if ( NumberMaskConfig.NUMBER_KEY == null || NumberMaskConfig.NUMBER_KEY.length == 0 ) ...{
return false;
}
for ( var i = 0 ; i < NumberMaskConfig.NUMBER_KEY.length ; i ++ ) ...{
if ( NumberMaskConfig.NUMBER_KEY[i] == pressKeyCode ) ...{
return true;
}
}
if(pressKeyCode==189||pressKeyCode==109)...{
return true;
}
return false;
};
// 判断键入的是不是功能键.
// 参数:pressKeyCode 从键盘输入值.
// 返回:true 是;false 不是.
NumberMask.prototype.isKeyValid = function ( pressKeyCode ) ...{
if ( pressKeyCode == null || typeof(pressKeyCode) != "number" ) ...{
return false;
}
if ( NumberMaskConfig.WORK_KEY == null || NumberMaskConfig.WORK_KEY.length == 0 ) ...{
return false;
}
for ( var i = 0 ; i < NumberMaskConfig.WORK_KEY.length ; i ++ ) ...{
if ( NumberMaskConfig.WORK_KEY[i] == pressKeyCode ) ...{
return true;
}
}
return false;
};
// 替换目标字符串中的特定字符串.
// 参数:objString 目标字符串;sourceString 要替换的字符串;reString 替换后的字符串.
// 返回:替换完成后的字符串.
NumberMask.prototype.replaceString = function ( objString, sourceString, reString ) ...{
if ( objString == null || objString.length == 0
|| sourceString == null || sourceString.length == 0 
|| objString.search(sourceString) < 0 ) ...{
return objString;
}
var frontStr = objString.substr(0, objString.search(sourceString) );
var lastStr = objString.substr( objString.search(sourceString) + sourceString.length ) ;
return (frontStr || "") + (reString || "" ) + (lastStr || "") ;
};
// 替换目标字符串中的特定位置的字符.
// 参数:objString 目标字符串;reIndex 制定的位置;reChar 替换后的字符.
// 返回:替换完成后的字符串.
NumberMask.prototype.replaceChar = function ( objString, reIndex, reChar ) ...{
if ( objString == null || objString.length == 0
|| reIndex < 0 || reIndex > objString.length 
|| reChar == null || reChar.length > 1 ) ...{
return objString;
}
var frontStr = objString.substr(0, reIndex );
var lastStr = objString.substr( reIndex + 1 );
return (frontStr || "") + reChar + (lastStr || "") ;
};
// 格式化数字.
NumberMask.prototype.formatTheNumber = function ( numberString ) ...{
// 输入数字字符串与当前格式不吻合,矫正.
if ( numberString == null || numberString.length == 0 ) ...{
numberString = ".";
}
var result = this.maskString;
var dot=numberString.indexOf(".");
if ( this.integerIndex >= 0 ) ...{
var integerString = "";
if(numberString.substr(this.integerIndex,dot)!=null&&numberString.substr(this.integerIndex,dot)!="")...{
integerString = numberString.substr(this.integerIndex,dot);
}
result = this.replaceString(result, "##", integerString);
}
if ( this.doubleIndex >= 0 ) ...{
var doubleString = "";
if(numberString.substr(dot+1)!=null&&numberString.substr(dot+1)!=""&&numberString.substr(dot+1).length>0)...{
doubleString = numberString.substr(dot+1) ;
}
result = this.replaceString(result, "dd", doubleString);
}
return result;
};
// 移动光标到指定的位置.
// 参数:direction 移动方向;position 位置,selectAll表示是否选择这个位置之后的文字.
NumberMask.prototype.moveCursor = function ( position, direction, selectAll ) ...{
if ( direction == null ) ...{
direction = 0;
}
// 如果位置非法,把光标移到最后.
if ( position < 0 || position > this.element.value.length ) ...{
position = this.element.value.length;
}

if ( direction > 0 ) ...{
// 找当前为之后(包括当前位置)的第一个可编辑位置.
while ( !this.canInputOrNot(position,this.element.value) && position < this.maskString.length ) ...{
position ++ ;
}
} else if ( direction < 0 ) ...{
// 找当前为之前(包括当前位置)的第一个可编辑位置.
while ( !this.canDeleteOrNot(position-1,this.element.value) && position > 0 ) ...{
position --;
}
} else ...{
// 绝对位置.
}
var objTextRange = this.element.createTextRange();
objTextRange.moveStart("character", position);
if ( selectAll == null ) ...{
selectAll = false;
}
if ( !selectAll ) ...{
objTextRange.collapse();
}
objTextRange.select();
};
//add by ddl
NumberMask.prototype.canDeleteOrNot = function (position,myText)...{
var minus=myText.indexOf("-");
if(minus<0)...{//没有负号
var dot=myText.indexOf(".");
var myInteger=myText.substr(0,dot);
var myDouble=myText.substr(dot+1);
if(myInteger.length==2&&position==2)...{
return false;
}
if(myDouble.length==2&&position==myText.length)...{
return false;
}
return true;
}else...{//已经有了负号
var dot=myText.indexOf(".");
var myInteger=myText.substr(0,dot);
var myDouble=myText.substr(dot+1);
if(myInteger.length==3&&position==3)...{
return false;
} 
if(myDouble.length==2&&position==myText.length)...{
return false;
}
return true;
}
}
// 校验指定位置范围的值是否符合数字格式.
NumberMask.prototype.check = function (numberString, position) ...{
return true;
};
// 判断指定位置是否可以输入
// 参数:position 制定的位置.
// 返回:true 可以输入;false 不可以.
NumberMask.prototype.canInput = function (position) ...{
if ( position < 0 || position >= this.maskString.length ) ...{
return false;
}
var currentChar = this.maskString.substr(position , 1 );
if ( currentChar == "#" || currentChar == "d" ) ...{
return true;
} else ...{
return false;
}
};
//add by ddl
NumberMask.prototype.canInputOrNot=function (position,myText) ...{
var minus=myText.indexOf("-");
if(minus<0)...{//没有负号
var dot=myText.indexOf(".");
var myInteger=myText.substr(0,dot);
var myDouble=myText.substr(dot+1);
if(myInteger.length==2&&position==2)...{
return false;
}
if(myDouble.length==2&&position==myText.length)...{
return false;
}
return true;
}else...{//已经有了负号
var dot=myText.indexOf(".");
var myInteger=myText.substr(0,dot);
var myDouble=myText.substr(dot+1);
if(position==0)...{
return false;
}
if(myInteger.length==3&&position==3)...{
return false;
} 
if(myDouble.length==2&&position==myText.length)...{
return false;
}
return true;
}
}
// 处理选中的字符.把可编辑位置置成零.
// 参数:selectText 选中的字符; startIndex 在原始值中的开始位置.
// 返回:处理完成后的字符串.
NumberMask.prototype.dealSelectText = function (selectText, startIndex, myText) ...{
if ( selectText == null || selectText.length == 0 ) ...{
return "";
}
if ( startIndex < 0 || (startIndex + selectText.length) > this.maskString.length ) ...{
return selectText;
}
var count = selectText.length;
for ( var i = 0 ; i < count ; i ++ ) ...{
if ( this.canInputOrNot(startIndex + i,myText ) ) ...{
selectText = this.replaceChar(selectText, i, "0");
}
}
return selectText;
};
// 数字mask的主要实现方法.
NumberMask.prototype.onKeyDown = function (e) ...{
this.elementValue = this.element.value || "";
this.pressKeyCode = e.keyCode;
// 获得当前选中的字符.
var selectionRange = this.document.selection.createRange();
this.selectText = selectionRange.text;
// 获得当前光标的位置.
var objTextRange = this.element.createTextRange();
selectionRange.setEndPoint("StartToStart", objTextRange);
this.currentPosition = selectionRange.text.length ;

if ( this.selectText == null ) ...{
this.selectText = "";
}

if ( e.ctrlKey && this.pressKeyCode == 86 ) ...{
// ctrl+v
this.onPaste(e);
} else if ( e.ctrlKey && this.pressKeyCode == 67 ) ...{
// ctrl+c 
} else if ( e.ctrlKey && this.pressKeyCode == 88 ) ...{
// ctrl+x
this.onCut(e);
} else if ( this.pressKeyCode == 46 ) ...{
// delete
this.dealDelete(e);
} else if ( this.pressKeyCode == 8 ) ...{
// backspace -->
this.dealBackSpace(e);
} else if ( this.pressKeyCode == 9 ) ...{
// tabspace -->
e.returnValue = true;
}
else if ( this.isNumberOrMinus(this.pressKeyCode) ) ...{
// 数字0-9 或者“-”
this.dealInputNumber(e);
} else if ( this.isKeyValid(this.pressKeyCode)) ...{
// 其他键盘功能键 
} else ...{
// 其他键
e.returnValue = false;
}
this.setHiddenValue();
};
// 处理输入数字时.
NumberMask.prototype.dealInputNumber = function (e) ...{
var frontStr = "";
var lastStr = "";
var inputNumber = this.pressKeyCode - 96;
if ( inputNumber < 0 ) ...{
inputNumber = this.pressKeyCode - 48;
}
var direction = 1; //默认向正向移动光标.
e.returnValue = false;
var newnumberString = "";
var checkPosition = this.currentPosition;
var newPosition = this.currentPosition;
if ( this.selectText.length > 0 ) ...{
//处理批量选择的时候使用
// 如果选中的字符串是以分割符开始,什么也不做.
if ( !this.isDotOrNot(this.currentPosition - this.selectText.length,this.elementValue) ) ...{
this.moveCursor(this.currentPosition, 0);
return;
}
var frontStr = this.elementValue.substr(0, this.currentPosition - this.selectText.length);
var lastStr = this.elementValue.substr(this.currentPosition);
this.selectText = this.dealSelectText(this.selectText, this.currentPosition - this.selectText.length,this.elementValue);
this.selectText = this.replaceChar(this.selectText, 0, inputNumber);
checkPosition -= this.selectText.length;
newnumberString = (frontStr || "") + inputNumber + (lastStr || "");
direction = 0;
this.element.value = this.formatTheNumber(newnumberString);
this.moveCursor(newPosition , direction);
} else ...{
//处理输入负号的情况
if(this.pressKeyCode==189||this.pressKeyCode==109)...{//输入负号只能在第一个位置
var minus=this.elementValue.indexOf("-");
if(minus>=0)...{//已经有了负号
return ;
}
if(this.currentPosition!=0)...{
return ;
}
newnumberString="-"+this.elementValue;
newPosition++;
this.element.value = this.formatTheNumber(newnumberString);
this.moveCursor(newPosition , direction);
}else...{
//处理输入数字的情况
var minus=this.elementValue.indexOf("-");
if(minus<0)...{//还没有负号
if(!this.canInputOrNot(this.currentPosition,this.elementValue))...{
return ;
}
var dot=this.elementValue.indexOf(".");
var myInteger=this.elementValue.substr(0,dot);
var myDouble=this.elementValue.substr(dot+1);
if(myInteger.length==2&&this.curentPosition==2)...{
return ;
}
if(myDouble.lenth==2&&this.currentPostion==this.elementValue.length)...{
return ;
}
if(myInteger.length==2&&this.currentPosition<2)...{
frontStr = this.elementValue.substr(0, this.currentPosition);
lastStr = this.elementValue.substr(this.currentPosition+1);
newnumberString = (frontStr || "") + inputNumber + (lastStr || "");
newPosition ++;
}else if(myDouble.length==2&&this.currentPosition>dot)...{
frontStr = this.elementValue.substr(0, this.currentPosition);
lastStr = this.elementValue.substr(this.currentPosition+1);
newnumberString = (frontStr || "") + inputNumber + (lastStr || "");
newPosition ++;
}else...{
frontStr = this.elementValue.substr(0, this.currentPosition);
lastStr = this.elementValue.substr(this.currentPosition);
newnumberString = (frontStr || "") + inputNumber + (lastStr || "");
newPosition ++;
}
this.element.value = this.formatTheNumber(newnumberString);
this.moveCursor(newPosition , direction);
}else...{//已经有了负号
if(!this.canInputOrNot(this.currentPosition,this.elementValue))...{
return ;
}
var dot=this.elementValue.indexOf(".");
var myInteger=this.elementValue.substr(0,dot);
var myDouble=this.elementValue.substr(dot+1);
if(myInteger.length==3&&this.curentPosition==3)...{
return ;
}
if(myDouble.lenth==2&&this.currentPostion==this.elementValue.length)...{
return ;
}
if(myInteger.length==3&&this.currentPosition<3)...{
frontStr = this.elementValue.substr(0, this.currentPosition);
lastStr = this.elementValue.substr(this.currentPosition+1);
newnumberString = (frontStr || "") + inputNumber + (lastStr || "");
newPosition ++;
}else if(myDouble.length==2&&this.currentPosition>dot)...{
frontStr = this.elementValue.substr(0, this.currentPosition);
lastStr = this.elementValue.substr(this.currentPosition+1);
newnumberString = (frontStr || "") + inputNumber + (lastStr || "");
newPosition ++;
}else...{
frontStr = this.elementValue.substr(0, this.currentPosition);
lastStr = this.elementValue.substr(this.currentPosition);
newnumberString = (frontStr || "") + inputNumber + (lastStr || "");
newPosition ++;
}
this.element.value = this.formatTheNumber(newnumberString);
this.moveCursor(newPosition , direction);
}
}
}
};
// 处理粘贴.
NumberMask.prototype.onPaste = function (e) ...{
var pasteValue = this.window.clipboardData.getData("Text");
e.returnValue = false;

if ( pasteValue == null || pasteValue.length == 0 ) ...{
return;
}

if ( pasteValue.length > this.maskString.length ) ...{
pasteValue = pasteValue.substr(0, this.maskString.length);
}
for ( var i = 0 ; i < pasteValue.length ; i ++ ) ...{
// 如果当前位置是分割符,但不与格式中的分割符相同.
if ( !this.isDotOrNot(i,pasteValue) && pasteValue.substr(i, 1) != "." ) ...{
return;
}
}
var minus=pasteValue.indexOf(".");
if(minus<0)...{
pasteValue=pasteValue+".";
}
this.element.value = this.formatTheNumber(pasteValue);
this.moveCursor(this.element.value.length);
};
// 处理剪切.
NumberMask.prototype.onCut = function ( e ) ...{
e.returnValue = false;

if ( this.selectText.length <= 0 ) ...{
return;
}
var frontStr = "";
var lastStr = "";
// 如果选中的字符串是以分割符开始,什么也不做.
if ( !this.isDotOrNot(this.currentPosition - this.selectText.length,this.elementValue) ) ...{
this.moveCursor(this.currentPosition, 0);
return;
}
var frontStr = this.elementValue.substr(0, this.currentPosition - this.selectText.length);
var lastStr = this.elementValue.substr(this.currentPosition);
//this.selectText = this.dealSelectText(this.selectText, this.currentPosition - this.selectText.length,this.elementValue);
var newnumberString = (frontStr || "") + "" + (lastStr || "");
this.element.value = this.formatTheNumber(newnumberString);
this.moveCursor(this.currentPosition , 0);
// 把选中的数字放入粘贴板.
this.window.clipboardData.clearData("Text");
this.window.clipboardData.setData("Text", this.selectText);
};
// 处理删除键.
NumberMask.prototype.dealDelete = function (e) ...{
var frontStr = "";
var lastStr = "";
var direction = 1; //默认向正向移动光标.
e.returnValue = false;
var newnumberString = "";
var newPosition = this.currentPosition;

if ( this.selectText.length > 0 ) ...{
// 如果选中的字符串是以分割符开始,什么也不做.
if ( !this.isDotOrNot(this.currentPosition - this.selectText.length,this.elementValue) ) ...{
this.moveCursor(this.currentPosition, 0);
return;
}
var frontStr = this.elementValue.substr(0, this.currentPosition - this.selectText.length);
var lastStr = this.elementValue.substr(this.currentPosition);
this.selectText = this.dealSelectText(this.selectText, this.currentPosition - this.selectText.length,this.elementValue);
newnumberString = (frontStr || "") + "" + (lastStr || "");
direction = 0;
} else ...{
// 如果当前位置是格式符.
if ( !this.isDotOrNot(this.currentPosition,this.elementValue) ) ...{
this.moveCursor(this.currentPosition + 1, 1);
return;
}
frontStr = this.elementValue.substr(0, this.currentPosition);
lastStr = this.elementValue.substr(this.currentPosition + 1);
newnumberString = (frontStr || "") + "" + (lastStr || "");
}
this.element.value = this.formatTheNumber(newnumberString);
this.moveCursor(newPosition , direction);
};
//判断是不是格式符号
NumberMask.prototype.isDotOrNot= function (position,myText)...{
var dot=myText.charAt(position);
if(dot==".")...{
return false;
}
return true;
};
// 处理backspace键.
NumberMask.prototype.dealBackSpace = function (e) ...{
var frontStr = "";
var lastStr = "";
var direction = -1;
e.returnValue = false;
var newnumberString = "";
var newPosition = this.currentPosition;

if ( this.selectText.length > 0 ) ...{
// 如果选中的字符串是以分割符开始,什么也不做.
if ( !this.isDotOrNot(this.currentPosition - this.selectText.length,this.elementValue) ) ...{
this.moveCursor(this.currentPosition - this.selectText.length , 0);
return;
}
var frontStr = this.elementValue.substr(0, this.currentPosition - this.selectText.length);
var lastStr = this.elementValue.substr(this.currentPosition);
this.selectText = this.dealSelectText(this.selectText, this.currentPosition - this.selectText.length,this.elementValue);
newnumberString = (frontStr || "") + "" + (lastStr || "");
newPosition -= this.selectText.length
direction = 0;
} else ...{
// 如果当前位置是格式符.
if ( !this.isDotOrNot(this.currentPosition - 1,this.elementValue) ) ...{
this.moveCursor(this.currentPosition - 1, -1);
return;
}
frontStr = this.elementValue.substr(0, this.currentPosition - 1);
lastStr = this.elementValue.substr(this.currentPosition);
newnumberString = (frontStr || "") + "" + (lastStr || "");
newPosition --;
}
this.element.value = this.formatTheNumber(newnumberString);
this.moveCursor(newPosition , direction);
};
// 设置隐藏输入框的值.
NumberMask.prototype.setHiddenValue = function () ...{
if ( this.hiddenElementId == null 
|| this.hiddenMaskString == null || this.hiddenMaskString.length == 0 ) ...{
return;
}

if ( !this.isValidNumber() ) ...{
this.hiddenElementId.value = "";
return;
}
var hiddenValue = this.hiddenMaskString;
var dot=this.element.value.indexOf(".");
if ( this.hiddenintegerIndex >= 0 && this.integerIndex >= 0 ) ...{
hiddenValue = this.replaceString(hiddenValue, "##", this.element.value.substr(this.integerIndex, dot));
}
if ( this.hiddendoubleIndex >= 0 && this.doubleIndex >= 0 ) ...{
hiddenValue = this.replaceString(hiddenValue, "dd", this.element.value.substr(this.doubleIndex, 2));
}
this.hiddenElementId.value = hiddenValue;
};
// 不出现鼠标的右键菜单.
NumberMask.prototype.onContextMenu = function (e) ...{
e.returnValue = false;
};
// 当输入框获得焦点时.
NumberMask.prototype.onFocus = function (e) ...{

if ( this.autoNull && this.element.value.length <= 0 ) ...{
this.element.value = this.formatTheNumber("");
}
var objTextRange = this.element.createTextRange();
var foundStart = false;
var start = 0;
var end = 0;
for ( var i = 0; i < this.maskString.length ; i ++ ) ...{
if ( !foundStart && this.canInput(i) ) ...{
start = i;
foundStart = true;
} else if ( foundStart && !this.canInput(i) ) ...{
end = i;
break;
}
}
objTextRange.moveStart( "character", start);
objTextRange.moveEnd( "character", 0 - (this.maskString.length - end));
objTextRange.collapse();
objTextRange.select();
};
// 判断当前的值是不是一个合法的时间.
NumberMask.prototype.isValidNumber = function () ...{
return true;
};
// 当输入框失焦点时.
NumberMask.prototype.onBlur = function (e) ...{
if ( this.autoNull && !this.isValidNumber() ) ...{
this.element.value = "";
}
};
// 相应鼠标的剪切和粘贴事件.
NumberMask.prototype.onBeforeCut = function (e) ...{
};
NumberMask.prototype.onBeforePaste = function (e) ...{
};
// 设置是否空值.
NumberMask.prototype.setNull = function (isNull) ...{
this.autoNull = isNull;
};
这是一个使用JavaScript编写的NumberMask函数,用于处理形式为##.dd的动态小数掩码,包括负值。函数通过监听键盘事件,实现对输入值的格式化,支持删除、粘贴、剪切等操作,并能处理隐藏的格式化数值。
1117

被折叠的 条评论
为什么被折叠?



