2013-08-22 3 views
0

Как сделать ввод, чтобы принимать только два десятичных знака и иметь максимум 10 цифр?Как сделать ввод, чтобы принимать только два десятичных знака и иметь максимум 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

вы имеете в виду, что перед '.' должно быть не более 10 цифр и после' .' должно быть не более 2 ' 'цифры? – MaveRick

+0

@MaveRick max 10 цифр = 8 + 2decimals –

+0

попробуйте использовать функции keyup и 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 или onchange.

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