배열에서 선택한 모든 확인란을 가져 오기
따라서 다음 확인란이 있습니다.
<input type="checkbox" name="type" value="4" />
<input type="checkbox" name="type" value="3" />
<input type="checkbox" name="type" value="1" />
<input type="checkbox" name="type" value="5" />
등등. 그중 약 6 개가 있으며 수작업으로 코딩되어 (즉, db에서 가져 오지 않음) 잠시 동안 동일하게 유지 될 수 있습니다.
내 질문은 배열 (자바 스크립트)으로 모두 가져올 수 있으므로 $.post
Jquery를 사용하여 AJAX 요청 을하는 동안 사용할 수 있습니다 .
이견있는 사람?
편집 : 선택한 확인란 만 배열에 추가하고 싶습니다.
형식 :
$("input:checkbox[name=type]:checked").each(function(){
yourArray.push($(this).val());
});
잘하면, 그것은 작동합니다.
var chk_arr = document.getElementsByName("chkRights[]");
var chklength = chk_arr.length;
for(k=0;k< chklength;k++)
{
chk_arr[k].checked = false;
}
나는 그것을 테스트하지 않았지만 작동해야합니다.
<script type="text/javascript">
var selected = new Array();
$(document).ready(function() {
$("input:checkbox[name=type]:checked").each(function() {
selected.push($(this).val());
});
});
</script>
순수한 JS
jQuery를 사용하지 않으려는 사람들을 위해
var array = []
var checkboxes = document.querySelectorAll('input[type=checkbox]:checked')
for (var i = 0; i < checkboxes.length; i++) {
array.push(checkboxes[i].value)
}
트릭을 수행해야합니다.
$('input:checked');
나는 당신이 확인할 수있는 다른 요소를 가지고 있다고 생각하지 않지만, 그렇게하면 더 구체적으로 만들어야합니다.
$('input:checkbox:checked');
$('input:checkbox').filter(':checked');
MooTools 1.3 (작성 시점에서 최신) :
var array = [];
$$("input[type=checkbox]:checked").each(function(i){
array.push( i.value );
});
Javascript에서는 다음과 같습니다 (Demo Link) :
// get selected checkboxes
function getSelectedChbox(frm) {
var selchbox = [];// array that will store the value of selected checkboxes
// gets all the input tags in frm, and their number
var inpfields = frm.getElementsByTagName('input');
var nr_inpfields = inpfields.length;
// traverse the inpfields elements, and adds the value of selected (checked) checkbox in selchbox
for(var i=0; i<nr_inpfields; i++) {
if(inpfields[i].type == 'checkbox' && inpfields[i].checked == true) selchbox.push(inpfields[i].value);
}
return selchbox;
}
바닐라 JS를 사용하려면 @ zahid-ullah와 비슷하지만 루프를 피할 수 있습니다.
var values = [].filter.call(document.getElementsByName('fruits[]'), function(c) {
return c.checked;
}).map(function(c) {
return c.value;
});
ES6의 동일한 코드가 더 좋아 보입니다.
var values = [].filter.call(document.getElementsByName('fruits[]'), (c) => c.checked).map(c => c.value);
window.serialize = function serialize() {
var values = [].filter.call(document.getElementsByName('fruits[]'), function(c) {
return c.checked;
}).map(function(c) {
return c.value;
});
document.getElementById('serialized').innerText = JSON.stringify(values);
}
label {
display: block;
}
<label>
<input type="checkbox" name="fruits[]" value="banana">Banana
</label>
<label>
<input type="checkbox" name="fruits[]" value="apple">Apple
</label>
<label>
<input type="checkbox" name="fruits[]" value="peach">Peach
</label>
<label>
<input type="checkbox" name="fruits[]" value="orange">Orange
</label>
<label>
<input type="checkbox" name="fruits[]" value="strawberry">Strawberry
</label>
<button onclick="serialize()">Serialize
</button>
<div id="serialized">
</div>
ES6 버전 :
const values = Array
.from(document.querySelectorAll('input[type="checkbox"]'))
.filter((checkbox) => checkbox.checked)
.map((checkbox) => checkbox.value);
function getCheckedValues() {
return Array.from(document.querySelectorAll('input[type="checkbox"]'))
.filter((checkbox) => checkbox.checked)
.map((checkbox) => checkbox.value);
}
const resultEl = document.getElementById('result');
document.getElementById('showResult').addEventListener('click', () => {
resultEl.innerHTML = getCheckedValues();
});
<input type="checkbox" name="type" value="1" />1
<input type="checkbox" name="type" value="2" />2
<input type="checkbox" name="type" value="3" />3
<input type="checkbox" name="type" value="4" />4
<input type="checkbox" name="type" value="5" />5
<br><br>
<button id="showResult">Show checked values</button>
<br><br>
<div id="result"></div>
var checkedValues = $('input:checkbox.vdrSelected:checked').map(function () {
return this.value;
}).get();
확인할 때 확인란의 값을 추가하고 선택을 취소하면 값을 뺍니다.
$('#myDiv').change(function() {
var values = 0.00;
{
$('#myDiv :checked').each(function() {
//if(values.indexOf($(this).val()) === -1){
values=values+parseFloat(($(this).val()));
// }
});
console.log( parseFloat(values));
}
});
<div id="myDiv">
<input type="checkbox" name="type" value="4.00" />
<input type="checkbox" name="type" value="3.75" />
<input type="checkbox" name="type" value="1.25" />
<input type="checkbox" name="type" value="5.50" />
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
Jquery 사용
모든 입력에 클래스를 추가하기 만하면됩니다. 클래스 "소스"를 추가하면 물론 변경할 수 있습니다.
<input class="source" type="checkbox" name="type" value="4" />
<input class="source" type="checkbox" name="type" value="3" />
<input class="source" type="checkbox" name="type" value="1" />
<input class="source" type="checkbox" name="type" value="5" />
<script type="text/javascript">
$(document).ready(function() {
var selected_value = []; // initialize empty array
$(".source:checked").each(function(){
selected_value.push($(this).val());
});
console.log(selected_value); //Press F12 to see all selected values
});
</script>
이것을 사용하십시오 :
var arr = $('input:checkbox:checked').map(function () {
return this.value;
}).get();
최신 브라우저에서 바닐라 JS를 사용 하여이 작업을 수행하는 또 다른 방법은 IE를 지원하지 않고 슬프게도 iOS Safari를 지원하지 않는 FormForm.getAll ()입니다 .
var formdata = new FormData(document.getElementById("myform"));
var allchecked = formdata.getAll("type"); // "type" is the input name in the question
// allchecked is ["1","3","4","5"] -- if indeed all are checked
버튼 클릭 또는 삽입을 실행하는 데 무언가를 사용하는 경우 이미 배열에있는 값을 추가하지 못하게하려면 주석 처리 된 if 블록을 사용하십시오
$('#myDiv').change(function() {
var values = [];
{
$('#myDiv :checked').each(function() {
//if(values.indexOf($(this).val()) === -1){
values.push($(this).val());
// }
});
console.log(values);
}
});
<div id="myDiv">
<input type="checkbox" name="type" value="4" />
<input type="checkbox" name="type" value="3" />
<input type="checkbox" name="type" value="1" />
<input type="checkbox" name="type" value="5" />
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
다음과 같이 시도해보십시오.
$('input[type="checkbox"]').change(function(){
var checkedValue = $('input:checkbox:checked').map(function(){
return this.value;
}).get();
alert(checkedValue); //display selected checkbox value
})
여기
$('input[type="checkbox"]').change(function() call when any checkbox checked or unchecked, after this
$('input:checkbox:checked').map(function() looping on all checkbox,
누군가가 이것을 시도 할 수있는 동일한 문제에 대한 내 코드는 다음과 같습니다. jquery
<script>
$(document).ready(function(){`
$(".check11").change(function(){
var favorite1 = [];
$.each($("input[name='check1']:checked"), function(){
favorite1.push($(this).val());
document.getElementById("countch1").innerHTML=favorite1;
});
});
});
</script>
function selectedValues(ele){
var arr = [];
for(var i = 0; i < ele.length; i++){
if(ele[i].type == 'checkbox' && ele[i].checked){
arr.push(ele[i].value);
}
}
return arr;
}
임시 변수가 필요없는 순수 JavaScript :
Array.from(document.querySelectorAll("input[type=checkbox][name=type]:checked")).map(e => e.value)
참고URL : https://stackoverflow.com/questions/590018/getting-all-selected-checkboxes-in-an-array
'IT박스' 카테고리의 다른 글
Sublime Text에서 여러 커서로 다른 모든 줄을 선택하려면 어떻게해야합니까? (0) | 2020.06.12 |
---|---|
빌드에서 누락 된 .pch 파일을 고치는 방법? (0) | 2020.06.12 |
두 날짜의 차이를 초 단위로 확인하려면 어떻게합니까? (0) | 2020.06.12 |
iOS 로직 테스트와 함께 CocoaPod를 사용할 때 라이브러리를 찾을 수 없음 (0) | 2020.06.12 |
Bootstrap 2를 사용하여 글리프 아이콘의 색상을 파란색으로 변경합니다. (0) | 2020.06.12 |