我想将用户输入限制为 html 表单中的正数。
我知道您可以设置 min=“0”,但是可以通过手动输入负数来绕过它。
有没有其他方法可以在不编写验证函数的情况下解决这个问题?
原文由 Ali 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果不验证输入值,这是不可能的。
输入类型=数字
具有值为“number”的 type 属性的 input 元素表示用于将元素的值设置为表示数字的 字符串 的精确控件。
由于它是表示数字的字符串,因此无法确定该字符串是否表示数值。
Permitted 属性不会使您能够验证数字输入控件的值。
在 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" />
如果您计划将数据发送到服务器,请确保也验证服务器上的数据。客户端 JavaScript 无法确保发送的数据符合您的预期。
原文由 DavidDomain 发布,翻译遵循 CC BY-SA 3.0 许可协议
1 回答1k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
2 回答893 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答902 阅读✓ 已解决
2 回答785 阅读
1 回答774 阅读✓ 已解决
这使用 Javascript,但您不必编写自己的验证例程。相反,只需检查
validity.valid
属性。当且仅当输入落在范围内时,这才会成立。