![](/img/trans.png)
[英]Allow only positive and negative numbers in textbox using JavaScript regex
[英]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个字符。 如果不是,它将恢复为最后一个可接受的值。
以下是有助于您解决问题的函数列表:
在您的上下文中,以下示例中的验证组合:
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。
oninput
事件。 例如:
<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! */ }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.