jQuery屏蔽输入前导零(s)
问题描述:
希望这不是一个重复的问题;我没有找到像这样的东西,所以在这里:jQuery屏蔽输入前导零(s)
我使用jQuery Masked Input掩码到一个四位数的美元数量与小数点分隔符,但没有分隔符($)。所以,就像这样:XX.XX
这里是我的代码示例:$('input[id^="myMaskedInput"]').mask("?99.99");
,对于四位数字1234 => 12.34等的伟大工程。
我的问题是当我输入一个,两个或三个数字的数字。例如,我需要123来掩饰到01.23,而不是12.30。即,我需要一个前导零或零。
有什么想法?
在此先感谢。
答
一个解决方案是使用(或用polyfill)padStart()。
从MDN文档:
的padStart()方法垫当前字符串与另一串(重复,如果需要的话),使得得到的字符串达到给定长度。填充从当前字符串的开头(左侧)开始应用。
下面是一个示例,给出了使用对polyfill方法进行小修改的条件。该代码将在页面加载中添加您正在寻找的前导零。但是,由于jQuery的屏蔽效果,这个代码片段在你输入时不会用值替换零值。
$(document).ready(function() {
$('input[id^="myMaskedInput"]').val(function(index, value) {
return padStart(value, 4, "0");
}).mask("?99.99");
});
function padStart(value, targetLength,padString) {
targetLength = targetLength>>0; //floor if number or convert non-number to 0;
padString = String(padString || ' ');
if (value.length > targetLength) {
return String(value);
}
else {
targetLength = targetLength-value.length;
if (targetLength > padString.length) {
padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed
}
return padString.slice(0,targetLength) + String(value);
}
}