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