我在以下示例中有此文本输入字段,该字段设置为仅接受数字:
<input type="number">
这里的实例:
https://jsfiddle.net/cL1ptdLv/1/
问题是我可以输入&#34; e&#34;,逗号,点等。但是在我的GUI中我需要将输入限制为只有数字0-9(整数),如235而不是2e35 。我怎么能这样做?
解决方案:
以下是基于suprabhat的回答的解决方案
在JQuery中:
$(".onlyNumber").keypress(function (evt) {
if (!(evt.keyCode >= 48 && evt.keyCode <= 57))
evt.preventDefault();
});
在html中我将名为onlyNumber的新类添加到我的输入框中:
<input type=number class="onlyNumber">
答案 0 :(得分:0)
您用于文本框的代码是正确的。
您可以使用以下Javascript代码进行验证。
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
并在文本框中调用
<input type="number" onkeypress="return isNumberKey(event)"/>
答案 1 :(得分:0)
为文本框指定了三个事件处理程序,onkeypress
,ondrop
和onpaste
。
在onkeypress
事件处理程序中,我正在调用JavaScript函数IsNumeric。
此函数首先确定键盘键的ASCII
代码,然后验证其ASCII code
是否在48
到57
范围内。
它还确保按下的键不是退格键或删除键等特殊键,如果是,那么它也被排除在外。
HTML标记
Numeric Value: <input type="text" id="text1" onkeypress="return IsNumeric(event);"
ondrop="return false;" onpaste="return false;" />
<span id="error" style="color: Red; display: none">* Input digits (0 - 9)</span>
<强>脚本强>
<script type="text/javascript">
var specialKeys = new Array();
specialKeys.push(8); //Backspace
function IsNumeric(e) {
var keyCode = e.which ? e.which : e.keyCode
var ret = ((keyCode >= 48 && keyCode <= 57) || specialKeys.indexOf(keyCode) != -1);
document.getElementById("error").style.display = ret ? "none" : "inline";
return ret;
}
</script>
答案 2 :(得分:0)
您可以尝试这样做。
<input type="number" OnKeyPress="return myFunction()" />
的JavaScript
function myFunction() {
var e = event || window.event; // get event object
var key = e.keyCode || e.which; // get key cross-browser
if (key < 48 || key > 57) { //if it is not a number ascii code
//Prevent default action, which is inserting character
if (e.preventDefault) e.preventDefault(); //normal browsers
e.returnValue = false; //IE
}
}