如何使用jQuery从数字中删除前导零?

时间:2012-08-27 16:35:25

标签: jquery

我使用此模式仅检查从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('');
    }
});

2 个答案:

答案 0 :(得分:8)

"" + parseFloat(str)

计算出数值是什么,然后再将它作为一个字符串。宾果,没有领先的零。

答案 1 :(得分: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"。