より長い形式で書くだけです:
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
ステートメントの順序です。
両方のチェックボックスがオンになっている場合、これは最初の評価の要件を満たしていますif
。JavaScript は、よりif
真である可能性がある別のものがあるかどうかを評価しません。それは、を返す最初の評価に続いて見つけたものを実行するだけです。true
構造をその順序に保つには、 を追加できますが&& $(otherCheckbox).not(':checked')
、それは冗長すぎます。あなたがしなければならないことは、最も満足するのが難しい評価を、複数のシナリオの下で一致する可能性のある他の評価よりも先に移動することです.