0

combine以下の2つがチェックされていることcheckboxesを知りたいのですが、それらの値をに書き込みたいと思います。bothhidden field

これらは私のチェックボックスと隠しフィールドです:

<input type="checkbox" name="chkText" id="cbA" value="" />A
<input type="checkbox" name="chkText" id="cbB" value="B" />B
<input id="TextSelection" type="hidden" />

これが機能していないので、このように何かを書くことができることを知りたい

if ($('#cbA','#cbB').is('checked')) {
$('#TextSelection').val("A and B");
}

デモ

4

3 に答える 3

3
if ($('#cbA').is(':checked') && $('#cbB').is(':checked')) {
    $('#TextSelection').val("A and B");
}

別のアプローチ:

if ($('#cbA,#cbB').filter(':checked').length==2) {
  $('#TextSelection').val("A and B");
}

これは、2 番目のアプローチのデモです。

于 2012-04-23T20:41:23.360 に答える
2

編集:checkedResult選択すると返される新しい機能を試してください。

$.fn.checkedResult = function() {
    var result = '';
    $.each($(this), function() {
        if (this.checked) {
            result += this.value;
        }
    });

    return (result == '')?'No Effects': result;
};

var $chkboxes = $("input[name='chkTextEffects']");
$chkboxes.change(function() {
    alert($chkboxes.checkedResult());
});

デモ


他の回答のように長い形式で記述するか、カスタム関数を記述し&&て結果を返します。

$.fn.isChecked = function () {
    var isChecked = true;
    $.each($(this), function() {
        isChecked = isChecked && this.checked;
    });

    return isChecked;
};

そして、以下のように呼び出します。

$('input[name=chkText]').isChecked()

デモ

于 2012-04-23T20:47:54.700 に答える
1

より長い形式で書くだけです:

if ($('#cbA').is(':checked') && $('#cbB').is(':checked')){
    $('#TextSelection').val("A and B");
}

単純化された、動作する JS Fiddle デモ

最初に投稿された、機能しない、jQuery:

$(document).ready(function() {
    $("input[name='chkTextEffects']").change(function() {
        if ($("#cbSolid").val() == 'Solid') {
            alert('Solid');
        } else if ($("cbOutline").val() == 'Outline') {
            alert('Outline');
        } else if ($('#cbSolid').is(':checked') && $('#cbOutline').is(':checked')) {
            alert('SolidOutline');
        } else {
            aler('No Effects');
        }
    });
});

投稿されたコードが機能しなかった理由は、if/else ifステートメントの順序です。

両方のチェックボックスがオンになっている場合、これは最初の評価の要件を満たしてますifJavaScript は、よりif真である可能性がある別のものがあるかどうかを評価しません。それは、を返す最初の評価に続いて見つけたものを実行するだけです。true

構造をその順序に保つには、 を追加できますが&& $(otherCheckbox).not(':checked')、それは冗長すぎます。あなたがしなければならないことは、最も満足するのが難しい評価を、複数のシナリオの下で一致する可能性のある他の評価よりも先に移動することです.

于 2012-04-23T20:41:55.503 に答える