2

関数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();

    });
});
4

4 に答える 4

5

おもう

$("#name").length

したほうがいい

$("#name").val().length

見つかっ$('#name').lengthた要素をカウントしますが、使用する必要がある文字をカウントするには

$("#name").val().length

したがって、関数は

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

あなたもできる

function valid_name() {
    var value = $('#name').val(), len = value.length;
    return len > 5 && len < 40;
}
于 2013-09-03T15:58:07.533 に答える
1

div id のスペルを「name_erors」としましたが、これはスペルミスのようです。最初にhtmlのスペルを再確認します。

于 2013-09-03T16:02:29.673 に答える
1

あなたの関数は常に を返すと思いますfalse。試す、

function valid_name() {
        if (($("#name").val().length > 5) && ($("#name").val().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();

            });
        });

.val()入力フィールドの値を与え、値の長さをチェックする必要があります。

$('#name').lengthID name を持つ要素の数を返しますが、これは確実に 5 未満です。

于 2013-09-03T15:58:36.217 に答える