javascript - 如果选中任一复选框,则启用和禁用文本字段

标签 javascript jquery html

我有一个表单,其中包含 2 个复选框和 2 个禁用的输入文本字段部分。

如果只选中第一个复选框,则应启用以下输入文本字段:

  • 电子邮件
  • 确认邮箱
  • 全名

如果只选中第二个复选框,则应启用以下输入文本字段:

  • 电子邮件
  • 确认邮箱
  • 颜色
  • 尺寸
  • 模型

如果两个复选框都被选中,那么所有的输入文本字段都应该被启用。我遇到的问题是,如果两个复选框都被选中,那么一个被取消选中,2 个电子邮件文本字段将被禁用。

这是我所拥有的 fiddle 。我可以使用 jQuery。 http://jsfiddle.net/Ujxkq/

这是我的 HTML:

<form id="myForm">
  <h3>Section 1</h3>
  Checkbox 1: <input type="checkbox" name="checkbox1" id="checkboxOne" onclick="enableDisableEmail(this.checked, 'emailAddr', 'emailConfirm');enableDisableSection1(this.checked, 'fullName');" />
  <p><input type="text" id="emailAddr" name="myEmailAddr" placeholder="Email" disabled /></p>
  <p><input type="text" id="emailConfirm" name="myEmailConfirm" placeholder="Confirm Email" disabled /></p>
  <p><input type="text" id="fullName" name="myFullName" placeholder="Full Name" disabled /></p>

  <h3>Section 2</h3>
  Checkbox 2: <input type="checkbox" name="checkbox2" id="checkboxTwo" onclick="enableDisableEmail(this.checked, 'emailAddr', 'emailConfirm');enableDisableSection2(this.checked, 'color', 'size', 'model');" />
  <p><input type="text" id="color" name="myColor" placeholder="Color" disabled /></p>
  <p><input type="text" id="size" name="mySize" placeholder="Size" disabled /></p>
  <p><input type="text" id="model" name="myModel" placeholder="Model" disabled /></p>
</form>

这是我的 Javascript:

function enableDisableEmail(isEnabled, email, confirm) {
    document.getElementById(email).disabled = !isEnabled;
    document.getElementById(confirm).disabled = !isEnabled;
}

function enableDisableSection1(isEnabled, fullName) {
    document.getElementById(fullName).disabled = !isEnabled;
}

function enableDisableSection2(isEnabled, color, size, model) {
    document.getElementById(color).disabled = !isEnabled;
    document.getElementById(size).disabled = !isEnabled;
    document.getElementById(model).disabled = !isEnabled;
}

最佳答案

你用 jQuery 标记了这个问题,但你目前没有使用它。
这是一个使用 jQuery 的版本:

jQuery(function($) {
    $('#checkboxOne, #checkboxTwo').click(function() {
        var cb1 = $('#checkboxOne').is(':checked');
        var cb2 = $('#checkboxTwo').is(':checked');
        $('#emailAddr, #emailConfirm').prop('disabled', !(cb1 || cb2));
        $('#fullName').prop('disabled', !cb1);
        $('#color, #size, #model').prop('disabled', !cb2);    
    });
});

如果您使用的是这个版本,您可以删除复选框本身的所有 onclick 属性。
此版本的更新 fiddle 在这里:http://jsfiddle.net/tB7Yz/

关于javascript - 如果选中任一复选框,则启用和禁用文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16929964/

相关文章:

javascript - Node + Express + Nginx 未设置 Cookie

javascript - 生成并排序 Javascript 随机数

jquery - 在 jquery 中引用选择器比实际调用选择器更快吗?如果是这样,有多大区别?

c# - 从 phonegap 应用程序的 MainPage.xaml.cs 切换 html 页面

python - 如何使用正则表达式将 asterix * 替换为 html <em> 标签

javascript - 第一个 Javascript 项目

javascript - 如何迭代数组中的元素,但在满足条件之前不从索引移动?

jQuery Sortable - 当新元素拖入列表时保存顺序

jquery - 事件不适用于 jQuery 和 Chrome 选择选项

javascript - 如何按特定文件类型过滤输入类型 ="file"对话框?