Javascript算法将数字添加到文本框中

时间:2011-04-07 10:19:18

标签: javascript jquery

我有2个文本框。当你离开它时,它总是应该包含4位数。当你离开时,它总是应该包含10位数字。

我需要一个javascript,其中一个文本框中的模糊应触发一个算法,该算法将计算刚刚模糊的文本框中的字符数量,如果文本框不包含特定的数字位数,则应添加x的数量数字前面的0(零),直到文本框中包含特定的数字位数。

我已经知道的是,我需要检查文本框上的.length,但之后的功能就是让我烦恼。

HTML

<asp:TextBox ID="txt1" runat="server" MaxLength="4"></asp:TextBox>
<asp:TextBox ID="txt2" runat="server" MaxLength="10"></asp:TextBox>

的Javascript

<script src="jquery-1.4.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
    var $reg = $('#txt1');
    var $acc = $('#txt2');

    $reg.blur(function () {
        if($reg.length < 4)
        {
            var $miss = 4 - parseFloat($reg.length);
        }
    });

    $acc.blur(function () {
        if($acc.length < 10)
        {
            var $miss = 10 - parseFloat($acc.length);
        }
    });
});
</script>

3 个答案:

答案 0 :(得分:2)

将它放在每个$ miss任务下面。

var padding = '';

for(var i = 0; i<$miss; i++) {
  padding += '0';
}

$(this).val(padding + $(this).val());

答案 1 :(得分:2)

这是一个简单的替代方案:

$reg.blur( function() {
    while( this.value.length < 4 )
    {
        this.value = '0' + this.value;
    }
} );

在jsfiddle上看到行动here

答案 2 :(得分:1)

创建一个字符串重复功能,用所需数量的前导零填充您的号码。

来自此主题的代码:Repeat String - Javascript

String.prototype.repeat = function(num) {
    return new Array(isNaN(num)? 1 : ++num).join(this);
    }

此外,您不需要将parseFloat用于length属性,无论如何都需要一个int值来计算。

把它放在一起:

$reg.blur(function () {
       $reg.val("0".repeat(4 - $reg.val().length) + reg.val() + "");
});

代码未经测试,但应指向正确的方向。