如何使输入只接受两位小数并且最多包含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;
}
答案 0 :(得分:1)
function onlyNumbers(){
var n = $('#GoalQuestionValue').val().toString().split('.');
if(n[0].length > 8 || n[0].length < 2) return false; else return true;
}
答案 1 :(得分:0)
而不是“onclick”尝试使用“onchange”或“oninput”事件。 如果你在谈论算法,我认为这是最好的算法:
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;
}
答案 2 :(得分:0)
为什么不使用正则表达式来验证此要求:
if($('#GoalQuestionValue').val().toString().match(/[0-9]{8}\.[0-9]{2}/)!=null && $('#GoalQuestionValue').val().toString().length>11)
答案 3 :(得分:0)
尝试使用keyup和keydown函数,而不是onclick或onchange。
答案 4 :(得分:0)
我认为你必须检查keypress
监听器的数字输入 -
$("#GoalQuestionValue").keypress(function (e) {
if (e.keyCode >= 48 && e.keyCode <= 57) {
if (!isValidNumberStr(this.value)) return false;
}
})