Skip to content

Commit b7444f2

Browse files
committed
feat: improved handling of checkbox and radio
1 parent 968f02c commit b7444f2

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

src/getValue.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const getValue = (element) => {
2222

2323
if (element.type === "checkbox") {
2424
let el_name = element.getAttribute('name');
25-
let checkboxs = document.querySelectorAll(`input[type=checkbox][name='${el_name}']`);
25+
let checkboxs = document.querySelectorAll(`input[type='checkbox'][name='${el_name}']`);
2626
if (checkboxs.length > 1) {
2727
value = [];
2828
checkboxs.forEach(el => {
@@ -34,7 +34,10 @@ const getValue = (element) => {
3434
if (el.checked)
3535
value = el.value
3636
}
37-
}
37+
} else if (element.type === 'radio') {
38+
let name = element.getAttribute('name');
39+
value = document.querySelector(`input[name="${name}"]:checked`).value
40+
}
3841
else if (element.type === "number") {
3942
value = Number(value);
4043
}

src/setValue.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@ const setValue = (el, value) => {
2626
if (isCrdt == "true" || el.type === 'file') return;
2727

2828
if (el.type == 'checkbox') {
29-
if (value.includes(el.value)) {
30-
el.checked = true;
31-
}
32-
else {
33-
el.checked = false;
29+
let name = el.getAttribute('name');
30+
let inputs = document.querySelectorAll(`input[type="${el.type}"][name="${name}"]`);
31+
for (let i = 0; i < inputs.length; i++) {
32+
if (value.includes(inputs[i].value))
33+
inputs[i].checked = true;
34+
else
35+
inputs[i].checked = false;
3436
}
3537
}
3638
else if (el.type === 'radio') {

0 commit comments

Comments
 (0)