var posCharCode=96;//char ',to keep cursor pos
function LimitNumberInput(obj) //用法 οnkeydοwn="return LimitNumberInput(this);" //this指当前控件
var ret=false;
//number format
var TextFormat=obj.TextFormat;
//the max length of the value int part
var MaxIntPart=Math.abs(parseInt(obj.MaxIntPart));
var TextAllowedNull=obj.TextAllowedNull;
var AlertInputFormatMessage=obj.AlertInputFormatMessage;
var AlertInputNotNullMessage=obj.AlertInputNotNullMessage;
switch(TextFormat)
{
case "Int":
if (event.keyCode == 189 || event.keyCode == 109)
{
ret=false;//-or -in Num tray
AddNumberInputCharLeft(obj,"-");
}
break;
case "IntPositive":
// alert("IntPositive");
break;
case "IntNegative":
if (event.keyCode == 189 || event.keyCode == 109)
{
ret=false;//-or -in Num tray
AddNumberInputCharLeft(obj,"-");
}
break;
case "Float":
if (event.keyCode == 190 || event.keyCode == 110)
{
ret=IsOnlyOneNumberInputChar(obj,".");
}
if (event.keyCode == 189 || event.keyCode == 109)
{
ret=false;//-or -in Num tray
AddNumberInputCharLeft(obj,"-");
}
break;
case "FloatPositive":
if (event.keyCode == 190 || event.keyCode == 110)
{
ret=IsOnlyOneNumberInputChar(obj,".");
}
break;
case "FloatNegative":
if (event.keyCode == 190 || event.keyCode == 110)
{
ret=IsOnlyOneNumberInputChar(obj,".");
}
if (event.keyCode == 189 || event.keyCode == 109)
{
ret=false;//-or -in Num tray
AddNumberInputCharLeft(obj,"-");
}
break;
case "Currency":
if (event.keyCode == 190 || event.keyCode == 110)
{
ret=IsOnlyOneNumberInputChar(obj,".");
}
if (event.keyCode == 189 || event.keyCode == 109)
{
ret=false;//-or -in Num tray
AddNumberInputCharLeft(obj,"-");
}
break;
case "CurrencyPositive":
if (event.keyCode == 190 || event.keyCode == 110)
{
ret=IsOnlyOneNumberInputChar(obj,".");
}
break;
case "CurrencyNegative":
if (event.keyCode == 190 || event.keyCode == 110)
{
ret=IsOnlyOneNumberInputChar(obj,".");
}
if (event.keyCode == 189 || event.keyCode == 109)
{
ret=false;//-or -in Num tray
AddNumberInputCharLeft(obj,"-");
}
break;
}
if (event.keyCode >= 48 && event.keyCode <= 57)
{
InputNumberChar(obj,event.keyCode);
ret=false; //0-9
}
if (event.keyCode == 9)
ret=true; //Tab
if (event.keyCode == 8)
{
DeleteRange(obj,true);
ret=false; //BackSpace
}
if (event.keyCode == 46)
{
DeleteRange(obj,false);
ret=false; //BackSpace
}
if (event.keyCode >= 96 && event.keyCode <= 105)
{
InputNumberChar(obj,event.keyCode-48);
ret=false; //0-9
}
//Enter or Enter in Num tray
if (event.keyCode == 13 || event.keyCode == 108)
ret=true;
//left arrow or right arrow
if (event.keyCode == 37 || event.keyCode == 39)
ret=true;
if(event.keyCode==188)
{
ret=false;
InsertComma(obj);
}
//judge the input value more than max value
var re=/,/g;
var objValue=Math.abs(parseFloat(obj.value.replace(re,"")));
if(TextFormat=="SamallInt" || TextFormat=="SmallIntPositive")
{
if(objValue > 32767||objValue< (-32768))
{
DeleteRange(obj,true);
ret=false;
}
}
else
{
if(TextFormat=="Int" || TextFormat=="IntPositive")
{
if(objValue>2147483647||objValue< (-2147483648))
{
DeleteRange(obj,true);
ret=false;
}
}
else
{
var MaxValue=Math.pow(10,MaxIntPart);
if(objValue>=MaxValue||objValue<=(-MaxValue))
{
DeleteRange(obj,true);
ret=false;
}
}
}
return ret;
}