所以我有一个复选框列表
<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"));
但是不知道这是正确的方法。
答案 0 :(得分:2)
您可以选择那些具有未选中属性的选中属性,以及那些没有具有选中属性的选中属性。
$('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>
答案 1 :(得分:0)
可以在复选框更改事件触发时使用事件侦听器进行处理。然后,在单击复选框时将这些值添加到数组中。
// array to hold modified checkbox values
var checkboxes = [];
// event listener on change
$('input[type=checkbox]').on('change', function(){
checkboxes.push($(this).val());
});
// log values to console
$('#btn1').on('click', function(){
console.log(checkboxes);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<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 class="inv_doc_ids[]" id="inv_doc_ids" name="inv_doc_ids[]" type="checkbox" value="01000290056003">
<button id="btn1" >Show modified values</button>
PS:我建议每个复选框使用不同的ID。 HTML ID应该是唯一的。
答案 2 :(得分:0)
addEventListener
知道哪个是更改。?
document.querySelectorAll('input[type=checkbox]').forEach(function(item){
item.addEventListener('change', function(){
console.log(item.value);
})
})
答案 3 :(得分:0)
$('button').on('click', function() {
var valuelist = [];
$("input[type=checkbox]").each(function() {
var dom_checked = $(this).attr('checked');
var checked = $(this).prop('checked');
if ((dom_checked === "checked" && checked === false) ||
typeof dom_checked === "undefined" && checked === true) {
valuelist.push(this.value);
}
})
console.log(valuelist);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input 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">
<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 checked class="inv_doc_ids[]" name="inv_doc_ids[]" type="checkbox" value="01000290056006">
<button>Check</button>