选中素数中的所有复选框



逻辑的要求是:
- 我有一个复选框列表(我使用 p:selectManyCheckbox(。
- 我还有一个复选框,如果选中它,其他复选框也应该被选中(我为此使用 p:selectBoolean复选框(
- 让我举一个具体的例子,现在我有 3 个复选框:
+ 全
选+ 项目 1+ 项目 2

如果选中"全选",则选中"项目 1"和"项目 2"。如果未选中"全选",则取消选中"项目 1"和"项目 2"。
如果未选中"项目 1"或"项目 2"之一,则应取消选中"全选"。如果同时选中"项目 1"和"项目 2",则应自动选中"全选"。

为了实现这一点,我为每个复选框的onchange事件使用javascript。
对于全选,onchange = update其他复选框(其他复选框,全选复选框(

function updateCheckboxes(otherCheckboxes, selectAllCheckbox) {
	otherCheckboxes.inputs.each(function() {
		if (selectAllCheckbox.isChecked()) {
			$(this).prop('checked', false);
		} else {
			$(this).prop('checked', true);
		}
		$(this).trigger('click');
	});
}

对于其他复选框,onchange = updateSelectAll复选框(其他复选框,选择全部复选框(

function updateSelectAllCheckbox(otherCheckboxes, selectAllCheckbox) {
	var notAllCheckboxesChecked = false;
	otherCheckboxes.inputs.each(function() {
		if ($(this).is(':checked') == false) {
			notAllCheckboxesChecked = true;
			return false;
		}
	});
	if (notAllCheckboxesChecked && selectAllCheckbox.input.is(':checked') == true) {
		selectAllCheckbox.input.trigger('click');
	} else if (!notAllCheckboxesChecked && selectAllCheckbox.input.is(':checked') == false) {
		selectAllCheckbox.input.trigger('click');
	}
}

这里的问题是,在 updateCheckbox(( 函数中,其他复选框的单击事件被触发,并且将调用 updateSelectAllCheckbox,但我不希望这样。那么如何防止在触发单击事件后在updateCheckbox((函数中调用updateSelectAllCheckbox((函数。

您不必调用$(this).trigger('check'),因为这将触发单击事件,您之前的代码$(this).prop('checked', true)已经确保选中该复选框,因此您不必再触发click事件。

如果$(this).prop('checked', true)不起作用,您也可以尝试:$(this).attr('checked', true);

相关内容

  • 没有找到相关文章

最新更新