隐藏函数jquery不起作用

KB9*_*KB9 2 javascript jquery

我有这个代码在函数valid_name不为true时显示错误,并valid_name在模糊时变为true时隐藏错误; 错误显示在最初隐藏的div中.出现错误但它不会消失.

function valid_name() {
    if (($("#name").length > 5) && ($("#name").length < 20)) {
        return true;
    } else {
        return false;
    }
}

 $(document).ready(function() {
    $('#name').on('blur', function() {
        if (!valid_name())
            $("#name_erors").text("invalid name").show();
        if (valid_name())
            $("#name_erors").hide();

    });
});
Run Code Online (Sandbox Code Playgroud)

the*_*dox 5

我认为

$("#name").length
Run Code Online (Sandbox Code Playgroud)

应该

$("#name").val().length
Run Code Online (Sandbox Code Playgroud)

导致$('#name').length计算找到的元素,但要计算你需要使用的字符

$("#name").val().length
Run Code Online (Sandbox Code Playgroud)

所以功能应该是

function valid_name() {
    if (($("#name").val().length > 5) && ($("#name").val().length < 20)) {
        return true;
    } else {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

你也可以

function valid_name() {
    var value = $('#name').val(), len = value.length;
    return len > 5 && len < 40;
}
Run Code Online (Sandbox Code Playgroud)