首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在实时JS中用键盘更新单选按钮检查状态

如何在实时JS中用键盘更新单选按钮检查状态
EN

Stack Overflow用户
提问于 2022-05-26 20:25:30
回答 2查看 189关注 0票数 0

所以我有一个带有隐形单选按钮的手风琴。一切都很好,直到我试着获得单选按钮的状态。对于每个手风琴单选按钮,我有4行代码:

代码语言:javascript
复制
const ac1 = document.getElementById('ac-1');

单选按钮包装在表单中:

代码语言:javascript
复制
<form class="ac-container">
<input id="ac-1" name="accordion-1" type="radio" checked="checked">
<input id="ac-2" name="accordion-1" type="radio">
<input id="ac-3" name="accordion-1" type="radio">
<input id="ac-4" name="accordion-1" type="radio">
</form>

这是我的单选按钮CSS:

代码语言:javascript
复制
.ac-container input {
    opacity: 0;
}

要检查单选按钮的状态,我尝试了:

代码语言:javascript
复制
if (ac1.checked) {
  //do something
} 

if (document.getElementById('ac-1').checked) {
  //do something
}

我需要单选按钮状态,这样我就可以实时显示东西了。对于常规的点击,我只是使用addEventListener('click', (e) => {},它工作得很好,但我需要单选按钮也与键盘一起工作。这就是我需要状态的原因,所以如果选中单选按钮,我可以立即更新所需的内容。

我不确定这是否是问题所在,但是,当我单击单选按钮时,“选中”属性永远不会从一个按钮转移到另一个按钮?

如果我发现什么,我会继续寻找和更新。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-26 21:46:43

您可以监听input事件。

示例:

代码语言:javascript
复制
<input type="radio" name="value" id="inp">
<input type="radio" name="value" id="inp2">
<script>

const inp = document.getElementById("inp")
const inp2 = document.getElementById("inp2")

inp.addEventListener('input', (e) => {
    console.log(inp.checked)
})

inp2.addEventListener('input', (e) => {
    console.log(inp.checked)
})
</script>
票数 0
EN

Stack Overflow用户

发布于 2022-05-26 22:26:50

从我上面的评论..。

“由于OP使用复选框和/或无线电控件,为什么OP需要一个基于JavaScript的解决方案?(几乎)一切都可以通过纯HTML/CSS实现。

代码语言:javascript
复制
[data-accordion] [type="radio"] + p,
[data-accordion] [type="checkbox"] + p {
  height: 0;
  overflow: hidden;
  opacity: 0;
  transition: opacity 2.5s ease-out;
  
}
[data-accordion] [type="radio"]:checked + p,
[data-accordion] [type="checkbox"]:checked + p {
  height: auto;
  opacity: 1;
}
h2 { margin: 0; font-size: 1em; }
p { margin: 0; }
代码语言:javascript
复制
<article data-accordion>
  <section>
    <h2>Topic 4</h2>
    <input type="radio" name="single-fold" />
    <p>
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nec lectus ante. Suspendisse sed tortor purus. Suspendisse potenti. Nunc pharetra odio id lorem pellentesque tincidunt.
    </p>
  </section>
  <section>
    <h2>Topic 5</h2>
    <input type="radio" name="single-fold" />
    <p>
      Praesent ut ipsum efficitur, commodo lectus eu, maximus risus. Fusce eu ipsum mauris. Pellentesque semper neque a convallis consequat. Suspendisse eu urna quis est condimentum dapibus id ac lectus. Nulla sit amet hendrerit arcu.
    </p>
  </section>
  <section>
  <h2>Topic 6</h2>
  <input type="radio" name="single-fold" />
  <p>
    Vestibulum vel sapien convallis diam iaculis consectetur non non ex. Suspendisse eget hendrerit ipsum. Suspendisse finibus quam eget est fringilla, finibus vehicula tortor varius. Praesent fermentum ac odio a ullamcorper.
    </p>
  </section>
</article>

<hr/>

<article data-accordion>
  <section>
    <h2>Topic 1</h2>
    <input type="checkbox" />
    <p>
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nec lectus ante. Suspendisse sed tortor purus. Suspendisse potenti. Nunc pharetra odio id lorem pellentesque tincidunt.
    </p>
  </section>
  <section>
    <h2>Topic 5</h2>
    <input type="checkbox" />
    <p>
      Praesent ut ipsum efficitur, commodo lectus eu, maximus risus. Fusce eu ipsum mauris. Pellentesque semper neque a convallis consequat. Suspendisse eu urna quis est condimentum dapibus id ac lectus. Nulla sit amet hendrerit arcu.
    </p>
  </section>
  <section>
  <h2>Topic 3</h2>
    <input type="checkbox" />
  <p>
    Vestibulum vel sapien convallis diam iaculis consectetur non non ex. Suspendisse eget hendrerit ipsum. Suspendisse finibus quam eget est fringilla, finibus vehicula tortor varius. Praesent fermentum ac odio a ullamcorper.
    </p>
  </section>
</article>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72397670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档