繁体   English   中英

javascript,仅允许负数和正数以及十进制最多6位数字

[英]javascript to allow only negative and positive numbers and decimal upto 6 digits on keypress

我需要验证cshtml页面中的文本框,以仅接受负数或正数以及最多6个小数位。 到目前为止,这是我尝试过的。

function AcceptUptoSixDecimalPlacesWithNegative(event, elem) {

if ((event.which != 46 || $(elem).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
    if (event.keyCode !== 8 && event.keyCode !== 46 && event.keyCode !== 9 && event.keyCode !== 0 && event.keyCode !== 45) { //exception
        event.preventDefault();
    }
}

var text = $(elem).val();

if ((text.indexOf('.') != -1) && (text.substring(text.indexOf('.')).length > 6)) {
    if (event.keyCode !== 8 && event.keyCode !== 46 && event.keyCode !== 9) { //exception
        event.preventDefault();
    }
}

这可以帮助我在小数点后达到六位数,但同时也允许所有特殊字符和字母。

任何有关此问题的帮助将不胜感激。

谢谢。

您可以使用Regex检查值:

var re = /^-?\d*\.?\d{0,6}$/; 
var text = $(elem).val();

var isValid = (text.match(re) !== null);

正则表达式表示:

^:字符串的开头

-? :一个或零个“-”

\\ d *:0到无穷大

\\。? :0或1“。

\\ d {0,6}:从0到6个数字

$:字符串结尾

您可以使用JavaScript的isNaN()函数。

 var inputPrevValue = ""; $(document).ready(function () { $("#numbersOnly").change(function () { if (isNaN($(this).val()) || $(this).val().length > 6) { $(this).val(inputPrevValue); } else { inputPrevValue = $(this).val(); } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <input type="text" id="numbersOnly"> 

这是一个(非常简单的)示例,用于测试输入的数字是否小于6个字符。 如果不是,它将恢复为最后一个可接受的值。

以下是有助于您解决问题的函数列表:

  1. Math.sign()检查其正/ 0,负/ 0和NaN
  2. 数字 MDN包含数字功能列表
  3. parseFloat()
  4. 小数点正则表达式后计算数字,即。 \\ d +([。\\ d {1,6}] *)\\

在您的上下文中,以下示例中的验证组合:

let x = elem;
if(Math.sign(x) === 1 || Math.sign(x) === -1) && ...
// decimal validations

希望这可以帮助。

***正在添加评论,因为还没有访问权限!!!

尝试使用正则表达式“ ^ [0-9] +(。[0-9] {1,2})?$”验证文本,然后继续进行逻辑运算。 js代码:

var patt = new RegExp("^[0-9]+(.[0-9]{1,6})?$");
var res = patt.test(str);

如果res为true,则继续,否则返回false;否则,返回false。

  1. 不要验证按键。 更改输入值的方法有很多。 处理oninput事件。
  2. 您可以将值视为字符串并使用正则表达式进行验证,但我认为最好将字符串和与数字有关的函数结合使用

例如:

<input type="number" step="any" oninput="validate(this)" />  

function validate(input){
  var number = parseFloat(input.value);
  if( number == input.value && input.value.length <= number.toFixed(6).length ){ /* valid! */ }
}

http://jsfiddle.net/tto2yvwj/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM