You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML5实现单选按钮与数字输入框联动:自动选中Specify及禁用输入

嗨,我来帮你实现这个智能的动态交互效果!咱们一步步来搞定它:

解决方案

首先,先调整下你的HTML结构——原来的数字输入框和单选按钮用了相同的name,这会导致表单提交时参数冲突,所以咱们给数字框换个name,同时给所有元素加上id,方便后续JS精准操作:

<h2>How many cars you own?</h2>
<form>
  <input type="radio" name="car" id="car-one" checked>
  <label for="car-one">One</label><br>
  <input type="radio" name="car" id="car-two">
  <label for="car-two">Two</label><br>
  <input type="radio" name="car" id="car-specify">
  <label for="car-specify">Specify</label>
  <input type="number" name="car_specify" id="car-number" disabled><br>
</form>

接下来用原生JavaScript实现核心交互逻辑,每一步都加了注释,方便你理解:

// 获取所有需要操作的DOM元素
const radioOne = document.getElementById('car-one');
const radioTwo = document.getElementById('car-two');
const radioSpecify = document.getElementById('car-specify');
const numberInput = document.getElementById('car-number');

// 处理单选按钮的选择事件
function handleRadioSelection() {
  if (this === radioOne || this === radioTwo) {
    // 选了One/Two:禁用数字框并清空内容
    numberInput.disabled = true;
    numberInput.value = '';
  } else {
    // 选了Specify:启用数字框
    numberInput.disabled = false;
  }
}

// 处理数字输入框的输入事件
function handleNumberInput() {
  // 只要输入框有内容,自动选中Specify单选
  if (this.value.trim() !== '') {
    radioSpecify.checked = true;
  }
}

// 给三个单选按钮绑定点击事件
radioOne.addEventListener('click', handleRadioSelection);
radioTwo.addEventListener('click', handleRadioSelection);
radioSpecify.addEventListener('click', handleRadioSelection);

// 给数字输入框绑定输入事件
numberInput.addEventListener('input', handleNumberInput);

交互效果说明:

  • 页面加载后,默认选中“One”,数字输入框处于禁用状态
  • 切换到“Two”时,数字框依然禁用,且内容被清空
  • 切换到“Specify”时,数字框自动启用,允许输入
  • 不管数字框是否提前启用,只要你在里面输入内容,“Specify”单选会自动被选中
  • 一旦切回“One”或“Two”,数字框立刻禁用,同时清空里面的内容

如果你项目里已经用了jQuery,也可以用下面的简化版代码:

$(document).ready(function() {
  // 监听单选按钮切换
  $('input[name="car"]').on('change', function() {
    if ($(this).attr('id') === 'car-specify') {
      $('#car-number').prop('disabled', false);
    } else {
      $('#car-number').prop('disabled', true).val('');
    }
  });

  // 监听数字输入框输入
  $('#car-number').on('input', function() {
    if ($(this).val().trim() !== '') {
      $('#car-specify').prop('checked', true);
    }
  });
});

这样就能完美实现你想要的智能交互啦!

内容的提问来源于stack exchange,提问作者R. Gurung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:04:21