我一直困在一个问题上并且正在寻找它,但却找不到问题。 我有一个文本字段,我想允许10位数和十进制值,例如我允许的数字将是:
1.11
1234567890
10位数范围内的任何内容(在下面这些情况下都有问题)
12345678.13
123456789.05
1234567890.12
我已经可以将文本框限制为10位,但问题是如何在10位数后只允许2位小数。
我的代码是:
function CheckNumber(textBoxValue,evt){
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode == 8 || charCode == 37) {
return true;
} else if (charCode == 46 && textBoxValue.indexOf('.') != -1) {
return false;
} else if (charCode > 31 && charCode != 46 && (charCode < 48 || charCode > 57)) {
return false;
}
console.log(charCode);
if(textBoxValue.length){
newVal = textBoxValue.split('.');
console.log(newVal);
if(newVal[0].length > 9){
if(charCode == 46){
return true;
}
return false;
}
}
return true;
}
答案 0 :(得分:1)
https://jsfiddle.net/L18d0qut/3/
修改强>
我相应地更改了代码。这个小提琴适合你吗?
我修改了支票以符合您的标准。关键代码现在是:
$('#input').on('keyup', function(){
var value = $(this).val();
if(value.match(/^[0-9,.]*$/)) {
if(value.indexOf(".") >= 0 || value.indexOf(",") >= 0){
console.log("YAY, we have a float, so it is valid!");
} else if(value.length <= 10) {
console.log("Valid!");
} else {
console.log("invalid!");
}
} else {
console.log("Only numbers and . or , are allowed!");
}
});
注意:这适用于包含.
和,
的浮动数字。如果您不想这样,您只需在regex
和indexOf()
方法中修改您的需求。
我检查输入的长度并通过正则表达式检查内容。这是你正在寻找的吗?
只需在控制台中查看结果: - )。
答案 1 :(得分:1)
我修改了你的代码&amp;创造了这样的东西。
function CheckNumber(textBoxValue,evt){
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode == 8 || charCode == 37) {
return true;
} else if (charCode == 46 && textBoxValue.indexOf('.') != -1) {
return false;
} else if (charCode > 31 && charCode != 46 && (charCode < 48 || charCode > 57)) {
return false;
}
//console.log(charCode);
if(textBoxValue.length){
newVal = textBoxValue.split('.');
/*console.log(newVal[1]);*/
if(typeof(newVal[1])!='undefined'){
if(newVal[1].length !=2){
return true;
}else{
return false;
}
}
if(newVal[0].length > 9){
if(charCode == 46){
return true;
}
if((charCode >= 48 || charCode <=57) && newVal[0].length == 10 && textBoxValue.indexOf('.') != -1 ){
if(newVal[1].length !=2){
return true;
}else{
return false;
}
}
return false;
}
}
return true;
}
答案 2 :(得分:0)
您可以查看
if(newVal[1].length > 2){
// your code
}
答案 3 :(得分:0)
试试这个:
function IsValid(input) {
return (/^\d{0,10}(\.\d{0,2})?$/).test(input);
}
这允许10位数和2位(可选)小数。输入必须是字符串。
答案 4 :(得分:0)
试试这个..............
function CheckNumber(textBoxValue,evt){
var a = textBoxValue.replace('.', '');
if(a.length <= 10){
console.log("valid");
} else {
console.log("invalid");
}
}
答案 5 :(得分:0)
此代码仅允许您使用两位小数和10位小数点前的数字
/ ^ \ d {0,12} (。\ d {0,2})?$ /;
您可以将文本框长度设置为{0,12},其中0:最小长度和12:最大长度
function IsValidNumber(Number) {
var expr = /^\d{0,12}(\.\d{0,2})?$/;
return expr.test(Number);
};
function ValidateNumber() {
var Number = document.getElementById("txtNumber").value;
if (!IsValidNumber(Number)) {
alert("Invalid number");
}
else {
alert("Valid number.");
}
}
&#13;
<input type="text" id="txtNumber" />
<input type="button" id="btnValidate" value="Validate" onclick = "ValidateNumber()" />
&#13;
答案 6 :(得分:-1)
您是否使用正则表达式考虑了文本框输入模式?
像pattern="\d{10}\.\d{2}$"