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

在jQuery表格中实现两个输入框互斥禁用:一方有值则禁用另一方

实现jQuery输入框互斥禁用功能

嘿,这个需求挺实用的,我给你写个清晰的实现方案,保证能完美解决你的问题:

首先,咱们先给两个输入框加个共同的类,这样用jQuery选择起来更方便,不用单独写每个name的选择器:

<input type="text" name='name0' placeholder='0.00' class="form-control mutual-exclusive-input">
<input type="text" name='mail0' placeholder='0.00' class="form-control mutual-exclusive-input" >

接下来是核心的jQuery逻辑,咱们要监听输入框的input事件(这个事件能响应所有输入操作,包括打字、粘贴、删除内容),然后实时处理互斥禁用的逻辑:

$(document).ready(function() {
  // 初始化检查:如果页面加载时某个输入框已有值,自动禁用另一个
  checkAndToggleInputs();

  // 监听输入框的输入事件
  $('.mutual-exclusive-input').on('input', function() {
    checkAndToggleInputs();
  });

  // 封装成函数,方便复用
  function checkAndToggleInputs() {
    const $inputs = $('.mutual-exclusive-input');
    // 获取两个输入框的值,去除首尾空格
    const val1 = $inputs.eq(0).val().trim();
    const val2 = $inputs.eq(1).val().trim();

    // 如果第一个有值,禁用第二个;否则启用
    $inputs.eq(1).prop('disabled', val1 !== '');
    // 如果第二个有值,禁用第一个;否则启用
    $inputs.eq(0).prop('disabled', val2 !== '');
  }
});

逻辑解释:

  • 初始化检查:页面加载完成后先执行一次检查,避免出现输入框已有值但另一个还能编辑的情况
  • 实时监听:用input事件代替keyup,能覆盖更多输入场景(比如右键粘贴、浏览器自动填充)
  • 值判断:用trim()处理值,避免用户只输入空格就触发禁用的误判
  • 复用函数:把核心逻辑封装成函数,不管是初始化还是输入变化都能调用,代码更简洁

如果你的输入框是动态生成的(比如表格里新增的行),可以把事件委托给父元素,比如:

// 假设表格的父容器是#table-container
$('#table-container').on('input', '.mutual-exclusive-input', function() {
  // 找到当前行的两个互斥输入框,而不是全局的
  const $rowInputs = $(this).closest('tr').find('.mutual-exclusive-input');
  const val1 = $rowInputs.eq(0).val().trim();
  const val2 = $rowInputs.eq(1).val().trim();

  $rowInputs.eq(1).prop('disabled', val1 !== '');
  $rowInputs.eq(0).prop('disabled', val2 !== '');
});

这样就算表格新增行,新的输入框也能正常触发互斥逻辑啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:22:38