2

我使用此模式仅在从 0 到任何值的数量字段中检查数字。如何使代码不允许 012、010 .. 等我的意思是起始零,但仍然允许 0 作为独立数字。

0、1、10、1等都可以,

但不允许 012、005 等。

有没有这样的模式?

这是我的代码,但它的问题是,它删除了 0,即使它不是我想要避免的数字前导。我想在我的字段中允许 0 作为独立数字。

$('.td-qnt input').live('change keyup blur', function(e) {
    var re = /^[0-9]\d*$/;
    var str = $(this).val();
    $(this).val(str.replace(/^[ 0]/g,''));
    if (re.test(str)){
        var price = $(this).parent().parent().prev('td').html();
        var realprice = price.replace(/[^0-9\.]/g,'');  
        var result = realprice * str;
        var subtotal = result.toFixed(2);
        $(this).parent().parent().next('td').html('$'+subtotal);
    } else {
        $(this).parent().parent().next('td').html('$0.00');
        $(this).val('');
    }
});
4

2 回答 2

8
"" + parseFloat(str)

计算出数值是什么,然后再次将其变为字符串。宾果游戏,没有前导零。

于 2012-08-27T16:40:19.817 回答
0

我有同样的要求,但在我的情况下,我清理了按键输入。parseInt 和 parseFloat 都清除前导零,但如果没有尾随数字,则 parseFloat 也会清除小数点。所以我写了这个:

function removeLeadingZeros(target){
    var finished=false;
    var localTarget=target;
    var firstDigit;
    var secondDigit;
    while (!finished){
        firstDigit=localTarget.substring(0,1);
        secondDigit=localTarget.substring(1,2);
        if (firstDigit == '0' && !(secondDigit == '.' || secondDigit == ''))
            localTarget=localTarget.substring(1);
        else
            finished=true;
    }
    return localTarget;
}

这将处理用户直接输入到字段中或像“0003”这样的粘贴。

于 2015-01-21T14:22:47.773 回答