2015-01-22 3 views
0

У меня есть одно текстовое поле, которое должно принимать десятичные числа, как 12345.678 Это текстовое поле должно принимать. до 5 знаков после запятой и после 3 десятичных знаков, как утверждать для этого типаКак проверить для десятичного числа

ответ

1

Вы можете использовать регулярные выражения для соответствия значениям из textarea. Обязательное регулярное выражение будет:

/^\d{5}\.{1}\d{3}$/ 

http://www.regexr.com/3a8rn

+1

'/\d{5}\.{1}\d{3}/ 'будет верно для каждого входа, который ** содержит ** часть, которая соответствует. Но он также будет соответствовать '00000.00000.00000' или' aaa00000.00000aaa' –

+1

Просто нужно '^' в начале и '$' в конце. – David

+0

@ t.niese да..только сделал..Thanks для headup! –

0

Это то, что вы ищете?

Fiddle:Demo

HTML

<input type="text" onkeypress = "return onlyDecimal(event,this)" onblur="validateValue(this)"/> 

JS

function onlyDecimal(event, elem) { 
    var charCode = (event.which) ? event.which : event.keyCode; 
    console.log(elem.value.indexOf(".")); 
    if(elem.value.length>=9) 
    { 
     validateValue(elem); 
     return false; 

    } 
    if (elem.value.indexOf(".") >= 0 && elem.value.split(".").length - 1 >= 0 && charCode > 31 && (charCode < 48 || charCode > 57)) { 
     return false; 
    } 
    if ((charCode == 190 || charCode == 110 || charCode == 46) && elem.value.length>=5) //for '.' 
     return true; 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 

} 

function validateValue(elem){ 
    if(elem.value.length<=9 && elem.value.indexOf(".") < 0) 
    { 
     alert("invalid value"); 
    } 
    else if(elem.value.length<=9 && elem.value.indexOf(".") !=5) 
    { 
     alert("invalid value"); 
    } 
    else if(elem.value.length>0 && elem.value.indexOf(".") >0) 
    { 
     var temp=elem.value.split("."); 

     if(temp[0].length<5 ||temp[1].length<3) 
      alert("invalid value"); 
    } 
}