Javascript HTML文本输入仅允许数字输入
有没有一种快速方法可以将HTML文本输入(Javascript HTML文本输入仅允许数字输入,javascript,jquery,html,Javascript,Jquery,Html,有没有一种快速方法可以将HTML文本输入()设置为只允许数字击键(加“.”?注意:这是一个更新的答案。下面的注释指的是一个旧版本,它把钥匙码弄得乱七八糟 $(".numeric").keypress(function() { return (/\d/.test(String.fromCharCode(event.which) )) }); JavaScript 自己试试。 $(".numeric").keypress(function() { return (/\d/.test
)设置为只允许数字击键(加“.”?注意:这是一个更新的答案。下面的注释指的是一个旧版本,它把钥匙码弄得乱七八糟
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
JavaScript
自己试试。
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
您可以使用以下setInputFilter
功能过滤文本的输入值(支持复制+粘贴、拖放、键盘快捷键、上下文菜单操作、不可键入的键、插入符号位置、不同的键盘布局和):
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
您现在可以使用setInputFilter
功能安装输入过滤器:
setInputFilter(document.getElementById("myTextBox"), function(value) {
return /^\d*\.?\d*$/.test(value); // Allow digits and '.' only, using a RegExp
});
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
有关更多输入过滤器示例,请参见。还要注意,您仍然必须执行服务器端验证强>
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
打字稿
这是这个的打字脚本版本
function setInputFilter(textbox: Element, inputFilter: (value: string) => boolean): void {
["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function(event) {
textbox.addEventListener(event, function(this: (HTMLInputElement | HTMLTextAreaElement) & {oldValue: string; oldSelectionStart: number | null, oldSelectionEnd: number | null}) {
if (inputFilter(this.value)) {
this.oldValue = this.value;
this.oldSelectionStart = this.selectionStart;
this.oldSelectionEnd = this.selectionEnd;
} else if (Object.prototype.hasOwnProperty.call(this, 'oldValue')) {
this.value = this.oldValue;
if (this.oldSelectionStart !== null &&
this.oldSelectionEnd !== null) {
this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
}
} else {
this.value = "";
}
});
});
}
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
jQuery
还有一个jQuery版本。看
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
HTML 5
HTML 5有一个带有
的本机解决方案(请参阅),但请注意,浏览器支持各不相同:
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
- 大多数浏览器只会在提交表单时验证输入,而不会在键入时验证输入
- 不支持
、步骤
和min
属性max
- Chrome(版本71.0.3578.98)仍然允许用户在字段中输入字符
和e
。另见e
- Firefox(版本64.0)和Edge(EdgeHTML版本17.17134)仍然允许用户在字段中输入任何文本
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
使用表单验证程序(例如,使用)
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
在输入字段的onblur(即用户离开字段时)事件期间使用正则表达式执行检查:
<script type="text/javascript">
function testField(field) {
var regExpr = new RegExp("^\d*\.?\d*$");
if (!regExpr.test(field.value)) {
// Case of error
field.value = "";
}
}
</script>
<input type="text" ... onblur="testField(this);"/>
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
函数测试字段(字段){
var regExpr=new RegExp(“^\d*\.?\d*$”;
如果(!regExpr.test(field.value)){
//错误案例
field.value=“”;
}
}
使用此DOM
<input type='text' onkeypress='validate(event)' />
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
HTML5有
,听起来很适合你。目前,只有Opera在本机支持它,但有一个支持JavaScript实现。还有一个例子,对我来说非常有用:
function validateNumber(event) {
var key = window.event ? event.keyCode : event.which;
if (event.keyCode === 8 || event.keyCode === 46) {
return true;
} else if ( key < 48 || key > 57 ) {
return false;
} else {
return true;
}
};
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
和HTML:
<input type="input" id="edit1" value="0" size="5" maxlength="5" />
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
如果您想向设备(可能是手机)建议字母或数字,您可以使用
我已经搜索了很长很长时间,想找到一个好的答案,我们迫切需要
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
这是一个改进的功能:
function validateNumber(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
if ((key < 48 || key > 57) && !(key == 8 || key == 9 || key == 13 || key == 37 || key == 39 || key == 46) ){
theEvent.returnValue = false;
if (theEvent.preventDefault) theEvent.preventDefault();
}
}
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
函数验证枚举器(evt){
var theEvent=evt | | window.event;
var key=theEvent.keyCode | | theEvent.which;
如果((键<48 | |键>57)和&!(键==8 | |键==9 | |键==13 | |键==37 | |键==39 | |键==46)){
theEvent.returnValue=false;
如果(theEvent.preventDefault)theEvent.preventDefault();
}
}
使用jQuery和replace()而不是查看event.keyCode或event.which的简短而甜蜜的实现:
$('input.numeric').live('keyup', function(e) {
$(this).val($(this).val().replace(/[^0-9]/g, ''));
});
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
只有一个小的副作用,即键入的字母会立即出现,而CTRL/CMD+A的行为似乎有点奇怪。HTML5支持正则表达式,因此您可以使用:
<input id="numbersOnly" pattern="[0-9.]+" type="text">
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
$(document).ready(function(){
$("body").on("focus","input[type=text].number,.NUMBER",function(e){
$(e.target).data('oldValue',$(e.target).val());
});
$("body").on("keypress","input[type=text].number,.NUMBER",function(e){
e.target.oldvalue = e.target.value;
number(e);
});
$("body").on("change","input[type=text].number,.NUMBER",function(e){
var t = e.target
var min = $(t).attr("min");
var max = $(t).attr("max");
var val = parseInt($(t).val());
if( val<min || max<val)
{
alert("Error!");
$(t).val($(t).data('oldValue'));
}
});
});
警告:某些浏览器尚不支持此功能。更安全的方法是检查输入值,而不是劫持按键并尝试过滤按键代码
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
通过这种方式,用户可以自由使用键盘箭头、修改键、退格、删除、使用非标准键盘、使用鼠标粘贴、使用拖放文本,甚至使用辅助功能输入
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
下面的脚本允许正数和负数
1
10
100.0
100.01
-1
-1.0
-10.00
1.0.0 //not allowed
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
var input=document.getElementById('number');
input.onkeyup=input.onchange=enforceFloat;
//强制执行只能输入浮点值
函数enforceFloat(){
var valid=/^\-?\d+\.\d*$^\-?[\d]*$/;
变量编号=/\-\d+\.\d*\-[\d]*.[\d]+\.[\d]*.[\d]+/;
如果(!valid.test(此.value)){
var n=此.value.match(数字);
this.value=n?n[0]:“”;
}
}
您还可以将输入值(默认情况下被视为字符串)与强制为数字的输入值进行比较,如:
if(event.target.value == event.target.value * 1) {
// returns true if input value is numeric string
}
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
但是,您需要将其绑定到keyup等事件。只是jQuery使用的另一个变体
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
JavaScript代码:
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
function validate(evt)
{
if(evt.keyCode!=8)
{
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode(key);
var regex = /[0-9]|\./;
if (!regex.test(key))
{
theEvent.returnValue = false;
if (theEvent.preventDefault)
theEvent.preventDefault();
}
}
}
HTML代码:
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
<input type='text' name='price' value='0' onkeypress='validate(event)'/>
因为backspace keycode是8,而regex表达式不允许这样做,所以这是一种绕过bug的简单方法:)这是的扩展版本。支持
min
和max
属性。如果数字超出范围,将显示上一个值
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
用法:
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
功能编号(e){
var theEvent=e | | window.event;
var key=theEvent.keyCode | | theEvent.which;
如果(key!=13&&key!=9){//允许输入并制表符
key=String.fromCharCode(key);
var regex=/[0-9]\./;
如果(!正则表达式测试(键)){
theEvent.returnValue=false;
如果(theEvent.preventDefault)theEvent.preventDefault();
}
}
}
$(文档).ready(函数(){
$(“输入[type=text]”。过滤器(“.number,.number”)。打开({
“焦点”:功能(e){
$(e.target).data('oldValue',$(e.target.val());
},
“按键”:功能(e){
e、 target.oldvalue=e.target.value;
编号(e);
},
“改变”:功能(e){
var t=e.target;
var min=$(t).attr(“min”);
var max=$(t).attr(“max”);
var val=parseInt($(t).val(),10);
如果(val最佳方法(允许所有类型的数字-实数负、实数正、整数负、整数正)是:
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
JavaScript
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
function validateNumber(evt) {
var e = evt || window.event;
var key = e.keyCode || e.which;
if (!e.shiftKey && !e.altKey && !e.ctrlKey &&
// numbers
key >= 48 && key <= 57 ||
// Numeric keypad
key >= 96 && key <= 105 ||
// Backspace and Tab and Enter
key == 8 || key == 9 || key == 13 ||
// Home and End
key == 35 || key == 36 ||
// left and right arrows
key == 37 || key == 39 ||
// Del and Ins
key == 46 || key == 45) {
// input is VALID
}
else {
// input is INVALID
e.returnValue = false;
if (e.preventDefault) e.preventDefault();
}
}
HTML
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
太简单了
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
//在JavaScript函数中(可以使用HTML或PHP)。
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
函数isNumberKey(evt){
var charCode=(evt.which)?evt.which:evt.keyCode;
如果(字符码>31&(字符码<48 | |字符码>57))
返回false;
返回true;
}
在表单输入中:
$(".numeric").keypress(function() {
return (/\d/.test(String.fromCharCode(event.which) ))
});
<input type=text name=form_number size=20 maxlength=12 onkeypress='return isNumberKey(event)'>
输入最大值时(上述值允许f