我已经将输入类型设置为“数字”,现在我想对其进行一些验证。如果输入包含“+”,“-”或“e”,我想防止启动该功能(单击按钮后)。
const countBtn = doent.getElementById("forge-points-btn");
function quanyHandler() {
let userInput = doent.querySelector(".forge-points-input").value;
if(userInput.split("").includes("e") || userInput.split("").includes("-")) {
return;
}
// else code
}
<input type="number" cl="forge-points-input" id="forge-points-input"></input>
<on type="on" id="forge-points-btn">Count</on>
但令我惊讶的是,它不起作用,因为当输入减号,加号或“e”时,例如“321-51”,“+ e-”等,然后userInput
等于空字符串。但是,当输入“-55”时,userInput
显示正确的值。为什么会发生这种情况?我试图找出为什么这个解决方案不起作用。我在这个论坛上看到其他解决方案无法理解,但
<input type="number">
元素会自动使任何不是数字(或为空,除非指定了required
)的条目无效。
您可以自己看到这一点:提供一个不是数字的值将自动使该字段无效。
<p>Equations are not numbers.</p>
<input type="text" id="text-input" value="123-456">
<input type="number" id="number-input" value="123-456">
<p>Signed numbers are numbers.</p>
<input type="number" id="number-input" value="-123">
<input type="number" id="number-input" value="+123">
<p>Exponents are numbers.</p>
<input type="number" id="exponent-input" value="10e5">
如果您想在input[type=number]
中禁止+
、-
和e
,那么您的方法是正确的。
if (!userInput?.length || userInput.includes("e") || ...)
(旁注,您不需要.split("")
,因为 JavaScript 可以将number
强制转换为string
。)
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(1条)