首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery复选框自动禁用和重新启用

jQuery复选框自动禁用和重新启用
EN

Stack Overflow用户
提问于 2016-01-23 01:13:48
回答 4查看 1.4K关注 0票数 2

我有我的HTML代码和像这样的JavaScript代码(我在使用jQuery)

HTML:

代码语言:javascript
复制
<input type="checkbox" name="type" value="program" id="box-1" /> Desktop Programming
<select name="lang-1" id="select-1" disabled>
    <option value="c">C/C++</option>
    <option value="vb">VB</option>
    <option value="cs">C#</option>
</select><br /><br />

<input type="checkbox" name="type" value="web" id="box-2" /> Web Development
<select name="lang-2" id="select-2" disabled>
    <option value="asp">ASP</option>
    <option value="php">PHP</option>
    <option value="ror">Ruby on Rails</option>
</select><br /><br />

JavaScript (jQuery):

代码语言:javascript
复制
$(document).ready(function(){
    var x;
    $("#box-" + x).click(function(){
        var $this = $(this);
        if ($this.is(":checked")) {
            $("#select-" + x).prop('disabled', false);
        } else {
            $("#select-" + x).prop('disabled', true);
        }
    });
});

我希望当我选中“编程”复选框时,“编程选择”选项(复选框旁边)是启用的。此外,当我选中web复选框时,web选择选项也是启用的。但我的代码不起作用。有人能帮我吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-23 01:48:04

最好是使用类而不是带有随机数的ID。我会给我所有的复选框类“框”和id 1,2,3等等。

而且,我认为$this不起作用。一定是$(this)

然后,您的代码将类似于(工作示例):

代码语言:javascript
复制
$(document).ready(function(){
    $('.box').click(function(){
        var x= $(this).attr("id");
        if ($(this).is(":checked")) {
            $("#select-" + x).prop('disabled', false);
        } else {
            $("#select-" + x).prop('disabled', true);
        }
    });
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="type" value="program" class="box" id="1" /> Desktop Programming
<select name="lang-1" id="select-1" disabled>
    <option value="c">C/C++</option>
    <option value="vb">VB</option>
    <option value="cs">C#</option>
</select><br /><br />

<input type="checkbox" name="type" value="web" class="box" id="2" /> Web Development
<select name="lang-2" id="select-2" disabled>
    <option value="asp">ASP</option>
    <option value="php">PHP</option>
    <option value="ror">Ruby on Rails</option>
</select><br /><br />

票数 1
EN

Stack Overflow用户

发布于 2016-01-23 01:36:59

对于像这样的东西使用类,不需要ID。

现在,您的变量x是未定义的,没有解析ID的循环,它将无法工作

代码语言:javascript
复制
<input type="checkbox" class="box" /> Desktop Programming
<select name="lang-1" class="select" disabled>

JS

代码语言:javascript
复制
$('input:checkbox.box').change(function(){
   $(this).next('.select').prop('disabled', !this.checked);
});

如果布局不符合输入后的选择,我们可以稍微修改一下遍历。

票数 0
EN

Stack Overflow用户

发布于 2016-01-23 01:49:52

嗨,你可以做一些像工作演示这样的事情

请在这里的所有复选框中有一个相同的类,我把它作为checkbox,然后您的HTML将如下所示

代码语言:javascript
复制
<input type="checkbox" name="type" value="program" class="checkbox" id="box-1" /> Desktop Programming
<select name="lang-1" id="select-1" disabled>
    <option value="c">C/C++</option>
    <option value="vb">VB</option>
    <option value="cs">C#</option>
 </select><br /><br />

 <input type="checkbox" name="type" value="web" class="checkbox" id="box-2" /> Web Development
  <select name="lang-2" id="select-2" disabled>
     <option value="asp">ASP</option>
     <option value="php">PHP</option>
     <option value="ror">Ruby on Rails</option>
  </select><br /><br />

添加写这个jquery

代码语言:javascript
复制
$(document).ready(function(){

   $('.checkbox').on('change',function(){
      var checked_id = $(this).prop('id');
      var a = checked_id.slice(4);

      $("#select-"+a).prop('disabled',!this.checked);
   });
 });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34958492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档