我需要验证我的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();
}
}
这有助于我在小数点后达到六位数,但它也允许所有特殊字符和字母表。
对此问题的任何帮助都将不胜感激。
感谢。
答案 0 :(得分:2)
您可以使用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个数字
$:字符串结尾
答案 1 :(得分:1)
您可以使用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();
}
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input type="text" id="numbersOnly">
&#13;
这是一个(非常简单的)示例,用于测试输入的长度是否小于6个字符。如果没有,它会将其恢复到最后可接受的值。
答案 2 :(得分:0)
以下列出了有助于您提问的功能:
在您的上下文中,以下示例中的验证组合:
let x = elem;
if(Math.sign(x) === 1 || Math.sign(x) === -1) && ...
// decimal validations
希望这有帮助。
答案 3 :(得分:-1)
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! */ }
}