在写后台时,会需要实现“一组checkbox”的功能,例如:
html:
<p>
<label for="zoneID">区服选择</label>
<input type="text" name="zoneID" id="zoneID" readonly>
<ul class="myList" id="zoneIDList" style="display: none;">
<li><input type="checkbox" id="allServer">全选</li>
<li><input type="checkbox" name="zoneIDCheckbox" class="subServer" value="10001">10001</li>
<li><input type="checkbox" name="zoneIDCheckbox" class="subServer" value="10002">10002</li>
<li><input type="checkbox" name="zoneIDCheckbox" class="subServer" value="10003">10003</li>
<li><input type="checkbox" name="zoneIDCheckbox" class="subServer" value="10004">10004</li>
</ul>
</p>
前端js实现:
// 复选框 显示 及 隐藏
$(document).ready(
$('#zoneID').focus(function () {
$('#zoneIDList').show();
}),
);
// 区服选择 全选,取消全选,单选 实现
$(document).ready(function () {
// 判断 全选 是否取消
var $subBox = $("input[type=checkbox][name='zoneIDCheckbox']");
$subBox.click(function () {
$('#allServer').prop('checked', $subBox.length == $subBox.filter(':checked').length ? true : false);
});
// 全选 取消全选 功能
$(document).on('click', '#allServer', function () {
if ( $('#allServer').is(':checked')) {
var text = '';
$('.subServer').each(function () {
$("input[type=checkbox][name='zoneIDCheckbox']").prop('checked', true); // 全选
var value = $(this).val();
var checked = $(this).is(':checked');
if (checked) {
text += value + '|';
}
$('#zoneID').val(text);
});
} else {
$('.subServer').each(function () {
$("input[type=checkbox][name='zoneIDCheckbox']").prop('checked', false);
$('#zoneID').val('');
})
}
});
// 单选 功能
$(document).on('click', '.subServer', function () {
var text = '';
$('.subServer').each(function () {
var value = $(this).val();
var checked = $(this).is(':checked');
if (checked) {
text += value + '|';
}
$('#zoneID').val(text);
})
})
});
备注:
不要用:$(this).attr('checked', false);
,会有bug!