当前位置:首页 > JavaScript

js实现多次单选

2026-02-03 01:54:08JavaScript

使用事件监听实现多次单选

在HTML中创建多个单选按钮组,确保每组有相同的name属性。通过JavaScript监听change事件,动态更新选中状态。

<div class="radio-group">
  <input type="radio" name="group1" value="option1"> Option 1
  <input type="radio" name="group1" value="option2"> Option 2
</div>

<div class="radio-group">
  <input type="radio" name="group2" value="optionA"> Option A
  <input type="radio" name="group2" value="optionB"> Option B
</div>
document.querySelectorAll('.radio-group input[type="radio"]').forEach(radio => {
  radio.addEventListener('change', function() {
    console.log(`Selected: ${this.value} from group ${this.name}`);
  });
});

动态生成单选按钮组

通过JavaScript动态创建多个单选按钮组,并自动处理选中逻辑。

function createRadioGroups(groupsData) {
  const container = document.getElementById('radioContainer');

  groupsData.forEach((group, index) => {
    const groupDiv = document.createElement('div');
    groupDiv.className = 'radio-group';

    group.options.forEach(option => {
      const radio = document.createElement('input');
      radio.type = 'radio';
      radio.name = `group${index}`;
      radio.value = option.value;
      radio.id = `group${index}_${option.value}`;

      const label = document.createElement('label');
      label.htmlFor = radio.id;
      label.textContent = option.label;

      groupDiv.appendChild(radio);
      groupDiv.appendChild(label);
    });

    container.appendChild(groupDiv);
  });
}

const sampleData = [
  { options: [
    { value: 'a', label: 'Choice A' },
    { value: 'b', label: 'Choice B' }
  ]},
  { options: [
    { value: 'x', label: 'Choice X' },
    { value: 'y', label: 'Choice Y' }
  ]}
];

createRadioGroups(sampleData);

存储和检索选择结果

使用对象来存储用户在各个单选组中的选择,并提供方法获取完整选择结果。

const selections = {};

document.querySelectorAll('.radio-group').forEach(group => {
  const radios = group.querySelectorAll('input[type="radio"]');
  const groupName = radios[0]?.name;

  radios.forEach(radio => {
    radio.addEventListener('change', function() {
      if (this.checked) {
        selections[groupName] = this.value;
      }
    });
  });
});

function getAllSelections() {
  return selections;
}

表单提交处理

在表单提交时收集所有单选组的选择结果,并阻止默认提交行为进行自定义处理。

document.getElementById('myForm').addEventListener('submit', function(e) {
  e.preventDefault();

  const formData = {};
  document.querySelectorAll('.radio-group').forEach(group => {
    const selected = group.querySelector('input[type="radio"]:checked');
    if (selected) {
      formData[selected.name] = selected.value;
    }
  });

  console.log('Form data:', formData);
  // 这里可以添加AJAX提交或其他处理逻辑
});

响应式单选按钮组

结合CSS实现视觉反馈,增强用户体验。

.radio-group {
  margin: 15px 0;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 5px;
}

input[type="radio"]:checked + label {
  font-weight: bold;
  color: #0066cc;
}

js实现多次单选

标签: 单选js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 //…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

vue 实现单选

vue 实现单选

实现单选功能的方法 在Vue中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用v-model绑定单选按钮 通过v-model可以轻松实现单选功能。将v-model绑定到一个变量,…