【问题标题】:How can I count the number of digits of a number with leading zeros in javascript?如何计算javascript中带有前导零的数字的位数?
【发布时间】:2020-10-28 02:55:09
【问题描述】:

我正在获取一个字段值,它应该是一个 4 位数字。

我想确保该值是 4 位数字,如果不是,则弹出“输入 4 位数字”的弹出窗口。

我注意到,当我将字段值放入变量时,它不会使用任何前导零。我运行代码的最后一个测试用例的值是“0000”。

var relay = this.getField("RELAY NUM").value;
var relayString = relay.toString();
var relaySplit = relayString.split("");
    
console.println("relay= " + relay);
console.println("string= " + relayString);
console.println("split= " + relaySplit);
    
for(i = 0; i < 4; i++){
    if (relaySplit[i] >= 0) {
        console.println("Looks good so far");
    } else {
        console.println("Please enter 4 digit number");
    }
}

--------------------------------------------------------
relay= 0
string= 0
split= 0
Looks good so far
Please enter 4 digit number
Please enter 4 digit number
Please enter 4 digit number

true

【问题讨论】:

  • 您可以使用relay.toString().padStart(4, '0') 确保有前导零
  • relay.length === 4 或 /^\d{4}$/.test(relay) ?
  • "0000".split() 返回 ["0000"]。直接用relay就可以了
  • 我改变了 var relayString=relay.toString().padStart(4,'0');当我尝试打印 relayString 时,它给了我以下错误:“relay.toString(...).padStart is not a function”

标签: javascript arrays forms validation digits


【解决方案1】:

您可能需要考虑的一种方法是使用正则表达式来确定输入值是否符合您的条件,而不是遍历数组。然后在诸如 keyup 之类的事件上(在这里使用 jQuery 但不是必需的),您运行验证并应用样式,或者根据需要发送弹出窗口。我对输入的长度进行了限制,因此用户无法输入比预期输入更多的内容,但这不是必需的。

$("#input").keyup(function() {
  let input = $("#input").val()
  let isValid = validate(input)
  
  $("#val").text(isValid ? "Valid" : "Invalid")  
})

function validate(val) {
  let x = /^[0-9]{4}$/
  return x.test(val)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <input type="text" id="input" maxLength="4" />
  <label id="val"></label>
</div>

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2022-01-15
    • 2022-01-10
    相关资源
    最近更新 更多