Asp.net 小数点后不允许超过5位。在“关于javascript”中;“OnKeyUp”是什么;?

Asp.net 小数点后不允许超过5位。在“关于javascript”中;“OnKeyUp”是什么;?,asp.net,javascript,Asp.net,Javascript,我有一个文本框的javascript代码,它会在数字上加逗号,比如(11,23233) 现在我需要限制用户在小数点后输入不超过5位数字(例如: 我可以改变上面的javascript来工作吗?不是优雅的或经过测试的,但这应该可以工作 function Comma( Num ) { var period = Num.indexOf('.'); // if you want to just fail... if ( Num.length > (period + 6))

我有一个文本框的javascript代码,它会在数字上加逗号,比如(11,23233)

现在我需要限制用户在小数点后输入不超过5位数字(例如:


我可以改变上面的javascript来工作吗?

不是优雅的或经过测试的,但这应该可以工作

function Comma( Num ) {

    var period = Num.indexOf('.');

    // if you want to just fail...
    if ( Num.length > (period + 6)) throw "too many after decimal point";

    if ( period != -1 ) {
        Num += '00000';
        Num = Num.substr( 0, (period + 6));
    }

    // might want to replace all commas->'' before parsing,
    // this will remove all trailing zeros
    Num = parseFloat( Num.replace( ',', '') );

    ....your stuff

}

您还可以尝试使用JQuery MaskedInput插件,该插件非常有效:


将正则表达式
/(\d+)\(\d{0,5})$/
用作:

function Comma(Num) {
  Num += '';
  Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', '');
  Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', '');

  var szChkRgx=/(\d+)\.(\d{0,5})$/;

  if(!Num.match(szChkRgx)){
    alert("Only max five decimal places allowed!");
    return;
  }

  //rest of your code.
}

今天我在这个senario工作,我发现了一种全新的方式,我希望你能在以下方面找到解决方案:

或者这是一种风格:

代码如下: 文本框 < textarea maxlength=“5”onkeyup=“return ismaxlength(this)”>

脚本代码:

函数ismaxlength(obj) { var mlLength=obj.getAttribute?parseInt(obj.getAttribute(“maxlength”):“” if(obj.getAttribute&&obj.value.length>mllength) 对象值=对象值子字符串(0,最大长度)
}

如何处理某些时间长度允许小数点后2位,某些时间长度允许小数点后5位。如果我传递mTextbox.Attributes.Add(“OnKeyUp”,“javascript:this.value=逗号(this.value,2);”)
function Comma( Num ) {

    var period = Num.indexOf('.');

    // if you want to just fail...
    if ( Num.length > (period + 6)) throw "too many after decimal point";

    if ( period != -1 ) {
        Num += '00000';
        Num = Num.substr( 0, (period + 6));
    }

    // might want to replace all commas->'' before parsing,
    // this will remove all trailing zeros
    Num = parseFloat( Num.replace( ',', '') );

    ....your stuff

}
jQuery(function($){
   $("#mTextbox").mask("99,99,999.99999");
});
function Comma(Num) {
  Num += '';
  Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', '');
  Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', '');

  var szChkRgx=/(\d+)\.(\d{0,5})$/;

  if(!Num.match(szChkRgx)){
    alert("Only max five decimal places allowed!");
    return;
  }

  //rest of your code.
}