我有一个输入字段,仅在选中“其他”选项时显示。当我取消选中“其他”复选框时,输入字段淡出,但我还希望输入字段淡出,如果不是取消选中“其他”复选框,我会检查同一组的另一个复选框。因此,除非选中“其他”,否则不应显示“其他”输入字段。我有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');
}
});
答案 0 :(得分:0)
从我的用例中收集到的是,您不想使用复选框,而是使用单选按钮。如果是这种情况,这将是实现您想要的好方法:
$('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)});
希望这适合你。 :)