0

我想知道如何检查combine以下两个checkboxes要知道both的内容,并且我想将它们的值写在hidden 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");
}

这是第二种方法的演示

于 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语句的顺序。

如果两个复选框都被选中,则这符合第一个评估if的要求;JavaScript 不会评估是否有另一个if真实的,它只是执行它在第一个评估返回后发现的内容。true

要使结构保持该顺序,您可以添加&& $(otherCheckbox).not(':checked'),但这过于冗长。您所要做的就是将最难满足的评估移动到其他可以在多种情况下匹配的评估之前。

于 2012-04-23T20:41:55.503 回答