javascript - 使用 typeof 进行输入验证

标签 javascript html

我正在研究输入验证,我不想使用 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/

相关文章:

javascript - 几个div中的粘性侧边栏

javascript - 使用 JS 获取 CSS 计算宽度的问题

javascript - 使用 jquery 制作图像 slider

html - xs bootstrap4 中的顺序优先

php - 如何在单击按钮时更改表单输入标签的 CSS 属性(边框颜色)并提交数据?

javascript - Chrome Android 在输入之间切换时隐藏键盘

html - 使用响应式图像调整内容大小

javascript - jQuery:影响相同深度的列表元素

javascript - 原型(prototype)继承,无需创建父对象

javascript - JQuery 选择值到变量中