javascript - 输入验证未检测到空值

标签 javascript

所以我有一个问题,当鼠标离开输入字段并且输入字段为空或少于 5 个字符时,我需要编写代码,它会输出一些内容

我试过将 .value 放在 getelementbyid 之后。请注意,我不能使用按钮来提交表单。

var username = document.getElementById('username');
var user_length = username.length;

username.onmouseout = function(){
    if(username == ""){
        alert('hi');
        // var username_value = 
        //document.getElementById("username_output");
        // username_value.innerHTML ="Please fill in your username!";
        // username_value.style.color = 'red';
    }

    else if(user_length < 5){
        alert('smaller than 5');
    }
    else{
        alert('else');
    }
};

每当鼠标离开时它应该输出一些东西。由于某种原因,它只出现在 else 语句中,而不出现在其他语句中

最佳答案

您正在将 input 本身(DOM 元素,document.getElementById('username') 的结果)与字符串进行比较,而不是输入的 值(value)

你想要它的 value 属性:

if (username.value == "") {

但请注意,用户可能会键入一个空格,在这种情况下,上述内容将是错误的,因为 "" 不等于 ""。您可以使用 trim 来解决这个问题:

if (username.value.trim() == "") {

由于空字符串是假的¹,您还可以节省一些输入:

if (!username.value.trim()) {

¹ "falsy"- 任何在用作 bool 值时强制为 false 的 JavaScript 值都称为 falsy 值。伪值是 0""NaNnullundefined、当然,false;所有其他值都是真实的

关于javascript - 输入验证未检测到空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56412970/

相关文章:

javascript - 使用 ng-model 将复选框输出绑定(bind)到对象的属性时出现异常行为

javascript - 出现依赖错误时恢复到以前版本的 Package.json

javascript - 将 AJAX 响应显示到输入字段中

javascript - jquery文件上传取消所有上传

javascript - 使用 lodash 从数组返回对象属性

javascript - 如何保持rails和javascript路由之间的一致性?

javascript - 如何在jQuery中阻止父元素的点击事件?

javascript - Chrome 扩展和内容脚本只能在 "inspect popup"模式下通信

javascript - 通过 Express 中间件将 req.body 传递给路由

javascript - DC.js |我怎样才能让.title(工具提示)在箱线图上工作?