如何使输入只接受两个小数,并且最多有10位数字
How to make an input to accept only two decimals and have maximum of 10 digits?
如何输入只接受两位小数,并且最多有10位数字?
我使用一个在onkeypress
激活的函数,并获取插入到我的输入中的值的长度。我必须接受最多10位数字,最多2位小数,但在我输入这2位小数后,我无法引入任何其他数字。例如,如果我有1234.11,我就无法达到10234.11。
function onlyNumbers(){
if($('#GoalQuestionValue').val().toString().length>10) return false;
if($('#GoalQuestionValue').val().indexOf('.') != -1 && $('#GoalQuestionValue').val().toString().length-$('#GoalQuestionValue').val().indexOf('.') >2) return false;
}
function onlyNumbers(){
var n = $('#GoalQuestionValue').val().toString().split('.');
if(n[0].length > 8 || n[0].length < 2) return false; else return true;
}
为什么不使用正则表达式来验证此需求:
if($('#GoalQuestionValue').val().toString().match(/[0-9]{8}'.[0-9]{2}/)!=null && $('#GoalQuestionValue').val().toString().length>11)
尝试keyup和keydown函数,而不是onclick或onchange。
我认为您必须在keypress
侦听器中检查数字输入-
$("#GoalQuestionValue").keypress(function (e) {
if (e.keyCode >= 48 && e.keyCode <= 57) {
if (!isValidNumberStr(this.value)) return false;
}
})
尝试使用事件"onchange"或"oninput"而不是"onclick"。如果你谈论的是算法,我认为这是最好的一个:
function onlyNumbers() {
var myArray = $('#GoalQuestionValue').val().toString().match(/([0-9]*)'.?([0-9]*)?/);
if(myArray[1]) {
if(myArray[1].length > 10)
return false;
if(myArray[2]) {
if( myArray[2].length > 2 )
return false;
if( myArray[1].length + myArray[2].length > 10)
return false;
}
return true;
}
return false;
}
相关文章:
- 将数字四舍五入到两位小数
- 在数字字符串的最后两个数字上加上小数
- 将数字格式化为货币,两位小数
- 从数组/字符串中删除所有小数和单个数字
- 大于带数字和小数的条件
- 删除Javascript中小数后的数字
- 用Javascript替换数字's小数
- 对于大的数字,在这个本地化函数上强制使用两个小数
- excel中数字格式时的小数位数
- JavaScript打印的数字有20位小数
- Javascript-格式化数字,始终显示原始的小数位数
- 如何通过 javascript 在浮点数中保留小数点数后的 2 位数字
- 将小数四舍五入为 3 个数字
- 当一个有小数而没有十进制时,JS减去数字
- 数字中的小数位数和精度
- 如何在 Node/Javascript 中丢弃数字的小数部分
- 如何使用 Angular “数字”过滤器键入时在输入字段中设置带有千和小数分隔符的字符串格式
- Javascript:如何检索*字符串*数字的小数位数
- 如何使用 javascript 获取带有 2 个小数且不舍入的数字
- 输入元素,只允许小数的数字,使用AngularJS