我正在研究输入验证,我不想使用 RegExp,但我一直想知道为什么 typeof 在 if 语句中不起作用或者我的代码有什么问题
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;
}
}
最佳答案
输入值的类型始终为字符串。由于您正在与严格相等运算符(===
)进行比较,因此您必须将它们转换为数字。仅当该值仅为数字时,才应使用 (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>
关于javascript - 使用 typeof 进行输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60132385/