我的下面的脚本检查表单输入包含至少10位数,除了其他文本.一切正常,除了它还将空格视为数字.有人可以帮忙解决这个问题吗?
Jsfiddle:http://jsfiddle.net/BG4du/
function(){
var text = input.value;
var totalNrOfDigits = 0;
for(var i = 0; i < text.length; i++){
if(!isNaN(text[i])){
totalNrOfDigits++;
}
}
if(totalNrOfDigits < 10){
alert("Invalid input");
}
}
Run Code Online (Sandbox Code Playgroud)
做这个:
function(){
var text = input.value.replace(/\s/g,"");
var totalNrOfDigits = 0;
for(var i = 0; i < text.length; i++){
if(!isNaN(text.charAt(i))){
totalNrOfDigits++;
}
}
if(totalNrOfDigits < 10){
alert("Invalid input");
}
}
Run Code Online (Sandbox Code Playgroud)
replace(" ","")只是取代第一次出现.我的解决方案删除了所有空格.
据MDN称,isNaN已被打破
从
isNaN函数规范的最早版本开始,它对非数字参数的行为一直令人困惑.当isNaN函数的参数不是类型时Number,该值首先被强制转换为aNumber.然后测试结果值以确定它是否是NaN.因此,对于非数字,当强制转换为数字类型时会产生有效的非NaN数字值(特别是空字符串和布尔基元,当强制赋予数值0或1时),"错误"返回值可能是意外的; 例如,空字符串肯定是"不是数字"....
我推荐这样的东西:
var code = text.charCodeAt(index);
if(code >= 48 && code <= 57){
totalNrOfDigits++;
}
Run Code Online (Sandbox Code Playgroud)
48是字符代码'0',57是字符代码'9'.
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |