希望这不是一个重复的问题;我没有找到类似的东西,所以这里有:
我使用jQuery Masked Input使用小数分隔符屏蔽了四位数的美元金额但没有分隔符($)。所以,就像这样:xx.xx
这是我的代码示例:$('input[id^="myMaskedInput"]').mask("?99.99");
这适用于四位数字1234 => 12.34等等。
我的问题是当我输入一位,两位或三位数时。例如,我需要123屏蔽到01.23,而不是12.30。即,我需要一个前导零或零。
有什么想法吗?
提前致谢。
答案 0 :(得分:1)
一种解决方案是使用(或使用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);
}
}