3

私はJSにこのコードを持っています:

if($('.log input:checked')) 
    {
        alert('login checked');
        alert('do what you want');
    }
    else 
    {
    alert('login not checked');
        alert('you can not do what you want');
}

しかし、それは正しく機能していません。IF ELSE条件は間違っていますか?

4

4 に答える 4

5
if( $('.log input').is(':checked') ) { // true/false

.is()をjQueryの方法で使用でき(説明的です)、一致した要素に対してブール値を返します。ただし、JS.lengthプロパティを使用することもできます。

さらに良い解決策(@macekによって親切に提案されました)

if( $('.log input').prop('checked') ) { // true/false
于 2012-07-01T22:11:06.367 に答える
0

この小さなプラグインを試してください:

プラグイン:

(function($) {

    $.fn.eachChequed = function(fnc, fnnc) {

        var
            ck = $(this).filter('[type="checkbox"], [type="radio"]'),
            isFnc = $.isFunction(fnc),
            isFnnc = $.isFunction(fnnc);

        function callFnc(el) {
            if (isFnc) {
                return fnc.call(el);
            }
            return true
        }

        function callFnnc(el) {
            if (isFnnc) {
                return fnnc.call(el);
            }
            return true;
        }

        ck.each(function(i, el) {
            try {
                var r = $(el).is(':checked') ? callFnc(el) : callFnnc(el);
                return r;
            } catch (e) {}
        });
    };

})(jQuery);

走る:

$('input').eachChequed(function(){

    console.log('checked', $(this));

},function(){

    console.log('no checked', $(this));

});   

テスト:リンク

于 2012-07-01T22:47:54.860 に答える
0

:checkedラジオボタンがチェックされているかどうかをテストする方法としては、を使用することをお勧めしますが、長さがあるかどうかを簡単にチェックすることもできます$('.log input:checked')

if($('.log input:checked').length) {
    alert('login checked');
} else {
    alert('login not checked');
}

lengthこれは、チェックされた要素の数(TRUEを示す)またはFALSEを示す0(ゼロ)のいずれかを返すため、if条件とは完全に異なります。

あなたの例では、ラジオボタンがチェックされているかどうかに関係なく、if($('.log input:checked'))常にFALSE以外の結果が表示され、メッセージが表示されます。login checked

于 2012-07-01T22:20:08.437 に答える
0

あなたは実際に.prop()これに使用する必要があります。値を返しtrue|falseます。

if ( $('.log input').prop('checked') ) { ...

http://api.jquery.com/prop/

于 2012-07-01T22:22:27.540 に答える