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

根据下拉选择与textarea状态控制按钮禁用状态 实现方案咨询

需求实现方案

核心校验规则:

  • 下拉框选中Reject选项时,textarea必须存在有效内容按钮才可点击,否则禁用
  • 下拉框选中其他选项时,按钮直接保持可用状态
  • 同时监听下拉框切换、文本框输入两个场景的状态变化,页面初始化时自动校验初始状态

一、jQuery 改进实现

替换原有显隐逻辑为禁用状态控制,补充文本框输入事件监听:

$(document).ready(function(){
  // 封装状态校验函数
  function checkButtonStatus() {
    const selectedVal = $("#selectId").val();
    // 此处.trim()是过滤全空格的无效输入,如果不需要可删除
    const textareaContent = $(".textarea-class").val().trim();
    let isBtnDisabled = false;
    if (selectedVal === "Reject") {
      isBtnDisabled = textareaContent === "";
    }
    // 控制按钮禁用属性
    $("button.button-class").prop("disabled", isBtnDisabled);
  }

  // 绑定两个触发校验的事件
  $("#selectId").on("change", checkButtonStatus);
  $(".textarea-class").on("input", checkButtonStatus);

  // 页面加载完成先校验一次初始状态
  checkButtonStatus();
});

可以补充CSS优化禁用状态的视觉表现:

button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

二、纯JavaScript实现(无jQuery依赖)

逻辑和上面完全一致,替换为原生API即可:

document.addEventListener('DOMContentLoaded', function() {
  const selectEl = document.getElementById('selectId');
  const textareaEl = document.querySelector('.textarea-class');
  const updateBtn = document.querySelector('button.button-class');

  function checkButtonStatus() {
    const selectedVal = selectEl.value;
    const textareaContent = textareaEl.value.trim();
    let isBtnDisabled = false;
    if (selectedVal === 'Reject') {
      isBtnDisabled = textareaContent === '';
    }
    updateBtn.disabled = isBtnDisabled;
  }

  // 绑定事件
  selectEl.addEventListener('change', checkButtonStatus);
  textareaEl.addEventListener('input', checkButtonStatus);

  // 初始化校验
  checkButtonStatus();
});

内容的提问来源于stack exchange,提问作者stevart

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:15:05