html 文本输入框禁止输入数字,HTML文本输入仅允许数字输入

小编典典

注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码。

JavaScript

您可以使用以下setInputFilter功能过滤文本的输入值(支持CopyPaste,Drag+Drop,键盘快捷键,上下文菜单操作,不可键入的键,插入标记的位置,不同的键盘布局以及IE9以后的所有浏览器 :

// Restricts input for the given textbox to the given inputFilter function.

function setInputFilter(textbox, inputFilter) {

["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function(event) {

textbox.addEventListener(event, function() {

if (inputFilter(this.value)) {

this.oldValue = this.value;

this.oldSelectionStart = this.selectionStart;

this.oldSelectionEnd = this.selectionEnd;

} else if (this.hasOwnProperty("oldValue")) {

this.value = this.oldValue;

this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);

} else {

this.value = "";

}

});

});

}

现在,您可以使用该setInputFilter功能来安装输入过滤器:

setInputFilter(document.getElementById("myTextBox"), function(value) {

return /^\d*\.?\d*$/.test(value); // Allow digits and '.' only, using a RegExp

});

有关更多输入过滤器示例。另请注意,您仍然

必须执行服务器端验证!

jQuery

还有一个jQuery版本。

HTML 5

HTML 5提供了一个本机解决方案请参见规范,但是请注意,浏览器支持有所不同:

大多数浏览器仅在提交表单时验证输入,而在键入时不验证输入。

大多数移动浏览器不支持step,min和max属性。

Chrome(版本71.0.3578.98)仍然允许用户输入字符e并E输入字段。

Firefox(版本64.0)和Edge(EdgeHTML版本17.17134)仍然允许用户在字段中输入 任何 文本。

2020-05-10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值