输入框小数位限制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入框小数位限制相关的知识,希望对你有一定的参考价值。

参考技术A 目前做输入框常用的控件就是textField 和 textView. 那么平时的场景是什么呢?
1、输入要求不能超过多大的值
2、保留2位小数
3、金额输入.....

在遇到这样的需求时,常常会针对不同的要求做不同的限制.
在这里我们稍稍分享一下技术实现的细节
这个主要思路还是通过控制文本的输入来进行校验的.

在这说下这个过程:
首先判断小数位数,
然后去限制大小. 通过 range.length 来判断是输入还是删除.
然后控制只能输入一个小数点,防止输入多个
最后控制输入的值是否超过最大值.

目前算是一个简版,可以通过控制键盘,来进行输入限制.
也可以通过正则方式来控制.随后再更新即可.

textField和textView的实现思路是一致的.不再赘述,具体可以参考 Demo 即可.

JavaScript 之 限制输入框值的整数小数位数

  
  工作中,经常能够碰到产品提的需求:限制数字输入框的小数只能输入多少多少位,更有甚者,还会限制输入的整数只能输入多少多少位,或者还有同时限制整数位以及小数位的情况;

  实现的思路也很简单,利用 replace 匹配 正则将输入的值替换掉即可;需要注意的是使用正则时由于需要动态的绑定位数的值,故:

  • 使用构造函数创建正则对象
  • 使用构造函数创建正则对象需要注意的是:需要常规的字符转义规则(在前面加反斜杠 \\)

话不多说,上代码:

/**
 * 限制输入框值的整数、小数位数
 * 默认限制2位小数,整数位不限制
 * @param number | string value,需要位数限制的值
 * @param number integerMax,通过指定integerMax值进行整数位的位数限制
 * @param number digits,通过指定digits值进行小数位的位数限制
 * @returns string value,返回一个位数限制的值
 */
function checkNum(value, integerMax, digits) 
	let reg;
	if (integerMax) 
	    reg = new RegExp(`^(\\\\-)*(\\\\d$integerMax).*$`); // 通过 integerMax 限制整数位,
	    if (!value.includes('.')) 
	      value = value.replace(reg, '$1$2');
	    
	
	if (digits) 
	    reg = new RegExp(`^(-)*(\\\\d*)\\\\.(\\\\d0,$digits).*$`); // 通过 digits 限制小数位,
	    value = value.replace(reg, '$1$2.$3');
	
	if (integerMax && digits) 
	    reg = new RegExp(`^(-)*(\\\\d$integerMax).*\\\\.(\\\\d0,$digits).*$`);
	 else 
	    reg = new RegExp(`^(-)*(\\\\d*).*\\\\.(\\\\d0,2).*$`);
	
	
    value = value.replace(reg, '$1$2.$3');
    return value


如有不足,望大家多多指点! 谢谢!

以上是关于输入框小数位限制的主要内容,如果未能解决你的问题,请参考以下文章

怎么让输入框只能输入数字和小数点?

flutter 输入框限制输入 数字小数

jQuery:限制文本框仅输入“数字”的最佳方法是啥? (允许小数点)

JavaScript 之 限制输入框值的整数小数位数

JavaScript 之 限制输入框值的整数小数位数

JavaScript 之 限制输入框值的整数小数位数