我正在进行输入验证,我不想使用RegExp,但我一直想知道为什么if语句中的typeof不能正常工作或我的代码有什么问题
function myDom(){
var message = document.getElementById('show');
var xx = document.getElementById('demo').value;
try{
if(xx === "") throw "can not be empty";
if(typeof xx === "number") throw "can not be number";
//if(xx < 100) throw "less than hundreds!"
}catch(err){
message.innerHTML = "input " + err;
}
}
答案 0 :(得分:1)
输入 value 的类型始终为 string 。由于您要与严格相等运算符(===
)进行比较,因此必须将它们转换为 number 。仅当值仅是使用( isNaN )的数字或不为空时,才应转换值:
var elValue = document.getElementById('demo').value;
var xx = isNaN(elValue) || elValue == '' ? elValue: Number(elValue);
演示:
function myDom(){
var message = document.getElementById('show');
var elValue = document.getElementById('demo').value.trim();
var xx = isNaN(elValue) || elValue == '' ? elValue: Number(elValue);
try{
if(xx === "") throw "can not be empty";
else if(typeof xx === "number") throw "can not be number";
else message.innerHTML = '';
//if(xx < 100) throw "less than hundreds!"
}catch(err){
message.innerHTML = "input " + err;
}
}
<input id="demo" oninput="myDom()"/>
<div id="show"></div>