2013-08-22 33 views
0

如何使一個輸入接受只有兩位小數和最多10位數?如何使輸入接受只有兩位小數並且最多有10位數字?

我使用在onkeypress處激活的函數,並獲取插入到我的輸入中的值的長度。我必須讓它接受最多10位數字,最多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

你的意思是之前'.'必須是最多10個數字 後'.'應該是最大'2數字? – MaveRick

+0

@MaveRick最多10位數= 8 + 2位 –

+0

嘗試鍵控和keydown函數,而不是onclick或onchange。 – sarsarahman

回答

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; 
} 
+0

對'onkeypress'抱歉。我修改了我的問題。 –

0

爲什麼不使用正則表達式來驗證此要求:

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

0

嘗試KEYUP和的keydown功能代替的onclick或交換。

0

我認爲你必須在keypress監聽器來檢查輸入數字 -

$("#GoalQuestionValue").keypress(function (e) { 
    if (e.keyCode >= 48 && e.keyCode <= 57) { 
     if (!isValidNumberStr(this.value)) return false; 
    } 
}) 
1
function onlyNumbers(){ 
var n = $('#GoalQuestionValue').val().toString().split('.'); 
if(n[0].length > 8 || n[0].length < 2) return false; else return true; 
} 
相關問題