2010-10-15 64 views
1

我想要标记字段的数字JavaScript验证。 输入的标记应该在5以内意味着用户可以输入不超过5分的标记。 标记可能是十进制的,如小数点后的4.25 应该有两位数字可以帮助我..数字标记字段验证

回答

1

最简单的方法可能是value.toString().match(/^[0-5](\.\d{1,2})?$/)。一般而言,您希望避免使用正则表达式,但这会为您节省一些其他详尽的步骤来验证数字的格式。

+0

@Sachin Shanbhag的回答是一个更好的主意。 – mway 2010-10-15 06:57:28

1

检查这个代码 -

if(Number(str) < 0 || Number(str).toFixed(2) > 5) { 
    //Throw error 
} 

其中str是要验证你的价值。

0

Mark: <input type="text" id="mark" onBlur="validateMark()">

function validateMark() { 
    var val = document.getElementById('mark').value; 
    if (!val.match(/^[0-5](\.\d{1,2})?$/)) { 
     alert("Invalid mark: " + val); 
    } 
} 
0

输入字段长度

您可以设置输入字段这样的最大长度:

<input type="text" maxlength="5" placeholder="12345" /> 

或者,如果你想拥有最大5字符,1个分隔符和2位小数:

<input type="text" maxlength="8" placeholder="12345.12" /> 

JavaScript的验证:

的快速解决方案(允许逗号+点,最大长度= 5)

var value = "15,5"; 
if(!isNaN(parseFloat(value)) && value.length <= 5) { 
    console.log('valid, continue'); 
} 

如果你只想让点,增加一个额外的 'isFinite的' 检查

var value = "145.5"; 
if(!isNaN(parseFloat(value)) && isFinite(value) && value.length <= 5) { 
    console.log('valid, continue'); 
} 

---注意以下! ---

如果你的意思是只是第一个数字(不包括小数点!)可以有一个5的最大长度,然后忘记以上。

您首先要检查输入是否为数字,然后强制两位数字。 最后可以检查如果长度为低于或等于8(5位数字+ 1个分离器+ 2位小数= 8)

var value = "12345.58852"; // Input field (string) 

if(!isNaN(parseFloat(value)) && isFinite(value) && parseFloat(value).toFixed(2).length <= 8) { 
    console.log('valid, continue'); 
} 

为了使其完整,这里是检查的功能,如果一个变量是数字

(测试:http://jsfiddle.net/web_nfo/CBKwA/

function isNumeric(value, strict) 
{ 
    var strict = (typeof strict == 'undefined' ? false : (strict == true ? true : false)); 
    if(strict && typeof value != 'number') { 
     return false; 
    } 
    return !isNaN(parseFloat(value)) && isFinite(value); 
} 

如果包括功能,您可以重写了最后检查是这样的:

if(isNumeric(value) && parseFloat(value).toFixed(2).length <= 8) { 
    console.log('valid, continue'); 
}