选中其他复选框会隐藏输入字段

时间:2013-11-20 23:56:16

标签: javascript jquery checkbox hide unchecked

我有一个输入字段,仅在选中“其他”选项时显示。当我取消选中“其他”复选框时,输入字段淡出,但我还希望输入字段淡出,如果不是取消选中“其他”复选框,我会检查同一组的另一个复选框。因此,除非选中“其他”,否则不应显示“其他”输入字段。我有javascript部分工作,但当我检查另一个复选框时,“其他”输入字段保持可见。

HTML

<input type="checkbox" id="residence_check" name="found"/>
<label for="residence_check">
    Residence
</label>
<input type="checkbox" id="tradeshow_check" name="found"/>
<label for="tradeshow_check">
    Tradeshow
</label>
<input type="checkbox" id="office_check" name="found"/>
<label for="office_check">
    Office Building
</label>
<input type="checkbox" id="check_other" value="found_other" name="found"/>
    <label for="check_other">
    Other
</label>
<input type="text" id="check_input" placeholder="Other"/>

的Javascript

$('#check_other').change(function() {
    if($(this).is(":checked")) {
        $('#check_input').fadeIn();
    } else {
        $('#check_input').fadeOut('fast');
            }
});

2 个答案:

答案 0 :(得分:0)

从我的用例中收集到的是,您不想使用复选框,而是使用单选按钮。如果是这种情况,这将是实现您想要的好方法:

http://jsfiddle.net/AeP58/1/

$('input[type=radio]').on('change', function() { //event on all radio buttons
    if($(this).attr('id') == 'check_other' && $(this).prop('checked')) {
        $('#check_input').fadeIn();
    } else {
        $('#check_input').fadeOut('fast');
    }
});

如果您确实需要复选框,可以稍微更改一下代码,并可能获得您想要的内容。

答案 1 :(得分:0)

如果您希望获得复选框的乐趣,可以试试这个:

function showHideOtherInput() {
console.log($(this)[0]==$('#check_other')[0]);
        var shouldShow=$('[id$="_check"]:checked').length===0 && $('#check_other').prop('checked');
        console.log(shouldShow);
    if(shouldShow) {
        $('#check_input').fadeIn();
    } else {
        $('#check_input').fadeOut('fast');
            }
}
$('#check_input').hide(); //since nothing is selected at this point just hide the input
$('#check_other').change(showHideOtherInput);
//for each XXXX_check checkbox trigger the show or hide function
$('[id$="_check"]').each(function(ix,el){$(el).change(showHideOtherInput)});

希望这适合你。 :)