2017-10-11 179 views
0

希望这不是一个重复的问题;我没有找到像这样的东西,所以在这里:jQuery屏蔽输入前导零(s)

我使用jQuery Masked Input掩码到一个四位数的美元数量与小数点分隔符,但没有分隔符($)。所以,就像这样:XX.XX

这里是我的代码示例:$('input[id^="myMaskedInput"]').mask("?99.99");

,对于四位数字1234 => 12.34等的伟大工程。

我的问题是当我输入一个,两个或三个数字的数字。例如,我需要123来掩饰到01.23,而不是12.30。即,我需要一个前导零或零。

有什么想法?

在此先感谢。

回答

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); 
    } 
}