如何避免HTML5中Number输入的十进制值。目前,它允许用户键入十进制值。
答案 0 :(得分:42)
提供答案的替代方法是在输入中监控按键。我个人喜欢将type="number"
作为属性。这是一个JSFiddle
<form action="#" method="post">
Numbers: <input name="num"
type="number"
min="1"
step="1"
onkeypress="return event.charCode >= 48 && event.charCode <= 57"
title="Numbers only">
<input type="submit">
</form>
答案 1 :(得分:11)
使用模式属性
<input type="number" name="num" pattern="[0-9]" title="Numbers only">
答案 2 :(得分:3)
您应该在提问时发布您尝试过的内容。
要仅使用整数,请更改以下属性。
step="any"
到
step="1"
答案 3 :(得分:3)
使用parseInt()的简单示例
<input type="number" oninput="this.value=(parseInt(this.value)||0)" placeholder="0-9" autofocus='' value='0' />
答案 4 :(得分:2)
根据此处的其他答案,我尝试了以下方法:
<input id="storeId" min="0" pattern="[0-9]" onkeypress="return !(event.charCode == 46)" step="1" title="Must be an integer number" type="number" >
我只是阻止了点的输入,但这又不会阻止粘贴。
ASCII点。字符是46
答案 5 :(得分:2)
我最终检查了用户是否输入了一段时间,然后阻止了事件的传播。
修改:一种更好的方法。按键事件为deprecated。还添加了一个正则表达式以去除粘贴上数字[0-9]以外的所有内容。
<input type="number" onkeydown="if(event.key==='.'){event.preventDefault();}" oninput="event.target.value = event.target.value.replace(/[^0-9]*/g,'');">
小心实验。仅部分适用于chrome: 希望找到一种很好的方法来抓取粘贴的值条,然后将其一切都正常地放入输入中。使用以上方法,您将依靠事件顺序来更正输入,然后理想情况下将触发任何事件侦听器。 onpaste方法将在输入事件触发之前触发,因此您可以确保事件流程正确。但是,当仅用数字替换字符串时,小数点仍然会潜入。寻找更好的解决方案时,请进行更新。
<input type="number" onkeydown="if(event.key==='.'){event.preventDefault();}" onpaste="let pasteData = event.clipboardData.getData('text'); if(pasteData){pasteData.replace(/[^0-9]*/g,'');} " >
答案 6 :(得分:1)
你们可以试试这个 此功能不允许用户粘贴不需要的字符,也不允许用户输入。+-E
var inputBox = document.getElementById("inputBox");
var invalidChars = [
"-",
"+",
"e",
"."
];
inputBox.addEventListener("input", function() {
this.value = this.value.replace(/[e\+\-\.]/gi, "");
});
inputBox.addEventListener("keydown", function(e) {
if (invalidChars.includes(e.key)) {
e.preventDefault();
}
});
<input type="number" id="inputBox" >
`
如果您的JS中出现错误。您可以添加 `$(document).ready(function() { code });
答案 7 :(得分:0)
一个简单的正则表达式可以帮助解决此问题。
var re = new regExp('[.]+) ;
if(!re.test(num)){listOfNumbers.push(num)};
不允许用户输入“。”当您处理多种文化和'。'的解释时,输入上的输入可能不是一个可行的选择。
答案 8 :(得分:0)
<input type="number" onkeydown="return event.keyCode !== 190">
这将限制句点(。)输入对于任何键限制: https://css-tricks.com/snippets/javascript/javascript-keycodes/
答案 9 :(得分:0)
@Html.TextBoxFor(model => model.num, new { @class = "form-control input-sm",@maxlength = 5 ,@oninput = "this.value = this.value.replace(/[^0-9]/g, '');"})
在MVC中,上述解决方案有效。