E plus:输入类型号加号 减号或“e”里面显示空值 为什么

我已经将输入类型设置为“数字”,现在我想对其进行一些验证。如果输入包含“+”,“-”或“e”,我想防止启动该功能(单击按钮后)。

const countBtn = document.getElementById("forge-points-btn");
function quantityHandler() {
    let userInput = document.querySelector(".forge-points-input").value;
    if(userInput.split("").includes("e") || userInput.split("").includes("-")) {
        return;
    }
    // else code
    }
    <input type="number" class="forge-points-input" id="forge-points-input"></input>
    <on type="on" id="forge-points-btn">Count</on>

但令我惊讶的是,它不起作用,因为当输入减号,加号或“e”时,例如“321-51”,“+ e-”等,然后userInput等于空字符串。但是,当输入“-55”时,userInput显示正确的值。为什么会发生这种情况?我试图找出为什么这个解决方案不起作用。我在这个论坛上看到其他解决方案无法理解,但

2

MDN Documentation表示:

<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。)

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(603)
迷你web服务器:Endianness和 Web服务器
上一篇
Oracle数据库的特点:克隆没有数据的 oracle数据库
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(43条)