【问题标题】:javascript fill input value with 0's till maxlengthjavascript用0填充输入值直到最大长度
【发布时间】:2018-03-02 11:58:36
【问题描述】:

我有一个最大长度为 13 个数字的输入。 每次您输入一个数字,它都会显示在网站上。

这工作正常,但如果输入的长度不是 13 个数字,我需要为 13 个数字中的每一个设置一个默认值 0。

所以如果你已经输入了1234,输出应该是这样的:1234000000000

只需将所有缺失的数字替换为 0

如果输入完全为空,则使用if (input == '') 但我总是需要 13 个数字,所以我必须用 0 填充输入

$('#input').keyup(function() {
  var input = $(this).val();
  if (input == '') {
    input = '0000000000000';
  }

  var i = 0;

  while (i < 13) {
    var digit = input.charAt(i);
    $('.inp' + i + ' > .digit').html(digit);
    i++;
  }

  var fdin = input.charAt(0);
  // getStructure(fdin);
});
div {display: inline-block;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="input" type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57' maxlength="13"></input>
<div class="inp0"><span class="digit">0</span></div>
<div class="inp1"><span class="digit">0</span></div>
<div class="inp2"><span class="digit">0</span></div>
<div class="inp3"><span class="digit">0</span></div>
<div class="inp4"><span class="digit">0</span></div>
<div class="inp5"><span class="digit">0</span></div>
<div class="inp6"><span class="digit">0</span></div>
<div class="inp7"><span class="digit">0</span></div>
<div class="inp8"><span class="digit">0</span></div>
<div class="inp9"><span class="digit">0</span></div>
<div class="inp10"><span class="digit">0</span></div>
<div class="inp11"><span class="digit">0</span></div>
<div class="inp12"><span class="digit">0</span></div>

编辑:用它制作了this

【问题讨论】:

  • 请用必要的 html 更新我为你制作的 sn-p - 例如 class="inpX digit" 还有为什么有内联代码和 jQuery 事件处理?
  • 用0填充做function(num) { return (num+"0000000000000").slice(0,13) }

标签: javascript jquery input numbers fill


【解决方案1】:

你可以使用 ES8 String.prototype.padEnd()

padEnd() 方法用给定的字符串填充当前字符串 (重复,如果需要),以便生成的字符串达到给定的 长度。填充从当前的末尾(右侧)应用 字符串。

var str = "123";
var newStr = str.padEnd(13, "0");
console.log(newStr);

【讨论】:

  • @creme 很高兴它有帮助。请务必将答案标记为正确:)
【解决方案2】:

您可以使用以下代码来使用 substr 技术。

function myFunction(number){
    var newValue = parseInt((number+"0000000000000").substr(0,13));
    return newValue;
}

希望对你有帮助。

【讨论】:

    【解决方案3】:

    你可以试试这个方法:

    var number = 123;
    for(var i = number.toString().length; i<13; i++) {
      number += '0';
    }
    console.log(number);

    还有:

    var number = 123;
    number += '0'.repeat(13 - number.toString().length);
    console.log(number);

    【讨论】:

    • 谢谢也有效。但我会使用void's 代码。少一点代码:)
    【解决方案4】:

    当 ES2017 的 String.padEnd 不可用时,这也可能是一种可能的方法:

    var maxLen = 13;
    var myNumber = 1234;
    var filledNumber = (myNumber + Array(maxLen).fill(0).join('')).substr(0, maxLen);
    

    【讨论】:

      猜你喜欢
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多