所以我有一个像
这样的复选框列表<input checked="checked" class="inv_doc_ids[]" id="inv_doc_ids" name="inv_doc_ids[]" type="checkbox" value="01000290056001">
<input checked="checked" class="inv_doc_ids[]" id="inv_doc_ids" name="inv_doc_ids[]" type="checkbox" value="01000290056002">
<input checked="checked" class="inv_doc_ids[]" id="inv_doc_ids" name="inv_doc_ids[]" type="checkbox" value="01000290056003">
我需要检查更改了哪些复选框(已选中 => 未选中,未选中 => 已选中),并收集这些值。
我现在已经停止了:
var collectID = [];
$.each($("input[class='inv_doc_ids[]']:checked"), function () {
collectID.push($(this).val());
});
console.log(collectID);
它只收集那些被选中的复选框并在数组中返回它们的值=> [01000290056001, 01000290056002, 01000290056003]
我需要添加什么才能使其正常工作? 考虑添加这样的内容:
var show = $(this),
colllect = (input.attr("checked") || "") === "checked";
return (colllect !== input.attr("checked"));
但不知道这样对不对。
最佳答案
您可以选择那些具有选中属性的不选中,那些没有选中属性的选中。
$('button').on('click', e => {
console.log(
$('input[checked]:not(:checked), input:not([checked]):checked')
.map( ( _, it ) => [[ it.value, it.checked ? 1 : 0 ]] )
.get()
);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input checked class="inv_doc_ids[]" name="inv_doc_ids[]" type="checkbox" value="01000290056001">
<input checked class="inv_doc_ids[]" name="inv_doc_ids[]" type="checkbox" value="01000290056002">
<input checked class="inv_doc_ids[]" name="inv_doc_ids[]" type="checkbox" value="01000290056003">
<br>
<input class="inv_doc_ids[]" name="inv_doc_ids[]" type="checkbox" value="01000290056004">
<input class="inv_doc_ids[]" name="inv_doc_ids[]" type="checkbox" value="01000290056005">
<input class="inv_doc_ids[]" name="inv_doc_ids[]" type="checkbox" value="01000290056006">
<br>
<button>Check</button>
关于javascript - 从复选框列表中获取那些已更改的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58014874/