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

在Backbone中勾选复选框时禁用输入框的实现方法

嗨~作为Backbone.js和jQuery的新手,其实用Backbone来实现这个需求特别规整,和原生JS的写法确实不太一样,我给你一步步讲清楚怎么弄:

用Backbone.js + jQuery实现复选框控制输入框禁用状态

第一步:先准备HTML结构

先把你的表单元素写好,比如:

<form>
  <label>
    <input type="checkbox" class="toggle-input"> 勾选禁用输入框
  </label>
  <input type="text" class="target-input" placeholder="试试输入内容">
</form>

(这里用类名代替ID,后续扩展更灵活,当然用ID也没问题)

第二步:写Backbone视图(核心部分)

Backbone的视图会帮你把事件绑定和DOM逻辑封装在一起,代码结构更清晰:

var InputToggleView = Backbone.View.extend({
  // 绑定到表单元素作为视图的根容器
  el: 'form',

  // 定义事件:复选框的change事件触发disableInput函数
  events: {
    'change .toggle-input': 'disableInput'
  },

  // 初始化视图时可以设置初始状态(可选)
  initialize: function() {
    // 默认让输入框处于启用状态
    this.$('.target-input').prop('disabled', false);
  },

  // 你关心的disableInput函数就在这里!
  disableInput: function(e) {
    // 先获取复选框的勾选状态
    var isChecked = $(e.target).is(':checked');
    // 用jQuery的prop方法设置输入框的disabled状态
    this.$('.target-input').prop('disabled', isChecked);
  }
});

// 最后实例化视图,让它生效
new InputToggleView();

为什么和原生JS不一样?

你提到其他帖子是原生JS,Backbone的优势在于:

  • 事件是委托绑定的(基于视图的根容器el),即使后续动态添加的元素也能触发事件,比原生的addEventListener更灵活
  • 视图把DOM操作和业务逻辑封装在一起,代码模块化,后续维护扩展更方便
  • this.$()是Backbone封装的jQuery选择器,只会在视图范围内查找元素,避免全局DOM查找的性能问题和命名冲突

小补充

如果你的输入框是通过Backbone模型动态渲染的,还可以在render方法里同步状态,或者监听模型变化来自动更新输入框的禁用状态,不过对于你的基础需求,上面的代码完全够用啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:40:40