0

如何进行输入以仅接受两位小数并最多包含 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;    
}
4

5 回答 5

1
function onlyNumbers(){
var n = $('#GoalQuestionValue').val().toString().split('.');
if(n[0].length > 8 || n[0].length < 2) return false; else return true;
}
于 2013-08-22T09:45:34.227 回答
0

为什么不使用正则表达式来验证此要求:

if($('#GoalQuestionValue').val().toString().match(/[0-9]{8}\.[0-9]{2}/)!=null && $('#GoalQuestionValue').val().toString().length>11)

于 2013-08-22T09:39:58.010 回答
0

尝试使用事件“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;
}
于 2013-08-22T09:29:42.240 回答
0

尝试使用 keyup 和 keydown 函数,而不是 onclick 或 onchange。

于 2013-08-22T09:44:03.937 回答
0

我认为您必须检查keypress听众是否有数字输入-

$("#GoalQuestionValue").keypress(function (e) {
    if (e.keyCode >= 48 && e.keyCode <= 57) {
        if (!isValidNumberStr(this.value)) return false;
    }
})
于 2013-08-22T09:44:40.157 回答