当前位置: 首页 > 知识库问答 >
问题:

防止表单输入type=“number”中的负输入?

卫宏硕
2023-03-14

我想在html表单中将用户输入限制为正数。

我知道您可以设置min=“0”,但是可以通过手动输入负数绕过此设置。

有没有其他方法可以解决这个问题而不用编写验证函数

共有3个答案

蒋鸿文
2023-03-14

如果您想确保默认值,即最小值或任何其他值,这是有效的解决方案。这也会阻止清除输入字段。同样,您也可以将其设置为最大值。

<input type="number" min="1" max="9999" maxlength="4" oninput="this.value=this.value.slice(0,this.maxLength||1/1);this.value=(this.value   < 1) ? (1/1) : this.value;">
司马耘豪
2023-03-14

如果不验证输入的值,这是不可能的。

具有type属性(其值为“number”)的输入元素表示将元素的值设置为表示数字的字符串的精确控件。

因为它是一个表示数字的字符串,所以无法确定该字符串是否表示数值。

允许的属性不会使您能够验证数字输入控件的值。

在JavaScript的帮助下做到这一点的一种方法可能是这样的。

// Select your input element.
var numInput = document.querySelector('input');

// Listen for input event on numInput.
numInput.addEventListener('input', function(){
    // Let's match only digits.
    var num = this.value.match(/^\d+$/);
    if (num === null) {
        // If we have no match, value will be empty.
        this.value = "";
    }
}, false)
<input type="number" min="0" />
颜光临
2023-03-14

这使用Javascript,但您不必编写自己的验证例程。相反,只需检查validity.valid属性。这将是真实的当且仅当输入落在范围内。

<html>
<body>
<form action="#">
  <input type="number" name="test" min=0 oninput="validity.valid||(value='');"><br>
  <input type="submit" value="Submit">
</form>
</body>
</html>
 类似资料:
  • 属性不能与一起使用。这种情况只在Chrome中发生。

  • 我有一个输入字段,用户只能在其中输入数字。 JSFIDLE演示 问题是:当我输入一个数字(例如,)然后按点()时,或-浏览器会自动删除输入字段的内容(值设置为“”=空字符串)。但是为什么呢?将类型从更改为似乎可以解决问题。但是,我失去了输入字段的向上/向下箭头功能。有什么想法吗?

  • 我有一个蓝牙条形码扫描仪附在Android平板电脑上。硬件键盘在Android设置中被禁用。这让我既可以扫描条形码,又可以使用软键盘打字。 当我扫描条形码时,我的活动按预期捕获所有键。但是软键盘出现了。 但什么都没起作用。当应用程序按下硬件键时,软键盘就会出现。

  • 我正在尝试将输入验证添加到一组三个 ,用户在其中输入数值。我面临的问题是,为了使计算正常工作,用户无法输入零作为输入字段之一,否则应用程序将崩溃。 我尝试实现以下操作以防止输入零并显示警告消息。我收到一条错误消息,指出“无法启动活动calcResult”,这是显示计算的活动。 这是错误日志的链接:http://pastebin.com/hDsabjR6 我从这里了解到,零值仍然在通过验证,但我不知