JS实现文本框仅允许输入数字与小数点的正则处理方案

作者:木棉时间:2026-10-26 19:15:49浏览:317

本文介绍如何使用JavaScript结合正则表达式限制HTML文本框仅允许输入数字和小数点。通过replace方法过滤非法字符,处理首位为小数点、多个小数点及末尾小数点等边界情况,并禁用粘贴功能以确保数据合法性。

JavaScript限制文本框输入数字与小数点的正则处理方案

经过大量网络搜索,发现现有的文本框限制方案大多不尽如人意,因此决定通过实际编码来验证解决方案,毕竟实践是检验真理的唯一标准。


具体实现代码如下:

 
function chkPrice(obj){
obj.value = obj.value.replace(/[^\d.]/g,"");
//确保第一个字符必须是数字,而非小数点
obj.value = obj.value.replace(/^\./g,"");
//确保只包含一个小数点,防止出现多个
obj.value = obj.value.replace(/\.{2,}/g,".");
//确保小数点仅出现一次,避免重复出现
obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
} 
function chkLast(obj){
//若检测到非法字符(如末尾的小数点),则进行截取
if(obj.value.substr((obj.value.length - 1), 1) == '.')
obj.value = obj.value.substr(0,(obj.value.length - 1));
} 

以下是调用上述逻辑的HTML文本框示例:


具体HTML代码如下:

 
<input type="text" name="txtFee" id="txtFee" class="common" onkeyup="chkPrice(this);" onblur="chkLast(this)" onpaste="javascript: return false;"/>

其中 onpaste="javascript: return false;" 的作用是禁用鼠标右键粘贴菜单,从而防止用户通过右键或 Ctrl+V 粘贴非法数据。



上述代码仅在 IE8 环境中进行过测试,若读者有其他建议或疑问,欢迎留言讨论。

作者最新文章