【问题标题】:jQuery and associative form, need help using enable and disable checkboxjQuery 和关联表单,需要帮助使用启用和禁用复选框
【发布时间】:2012-02-27 07:24:04
【问题描述】:

我需要有关 jQuery 和多数组表单的帮助。我的表格如下:

<form>
<div class="box" style="border:1px #000 solid">
    <input type="checkbox" name="clause[3][chk]" class="clause_check">
    <input type="text" name="clause[3][number]" class="clause_number numericonly" maxlength="2" size="2" disabled="disabled">
    This is a clause with a text field <input class="clause_input" name="clause[3][field][-_transfer_charges_-]" disabled="disabled" type="text"> to be filled in.
</div>
<div class="box" style="border:1px #000 solid">
    <input type="checkbox" name="clause[2][chk]" class="clause_check">
    <input type="text" name="clause[2][number]" class="clause_number numericonly" maxlength="2" size="2" disabled="disabled">
    This is a clause without a text box to fill.
</div>
<div class="box" style="border:1px #000 solid">
    <input type="checkbox" name="clause[1][chk]" class="clause_check">
    <input type="text" name="clause[1][number]" class="clause_number numericonly" maxlength="2" size="2" disabled="disabled"> 
    Another clause with a 
    <input class="clause_input" name="clause[1][field][-_transfer_charges_-]" disabled="disabled" type="text"> 
    to be filled in.
    <ol type="a">
        <li>This is a sub clause with a <input class="clause_input" name="clause[1][field][-_noc_charges_-]" disabled="disabled" type="text"></li>
        <li>Last sub clause.</li>
    </ol>
</div>
</form>

现在,默认情况下禁用所有文本框字段。选中相应的复选框字段后,同一 div 上的所有文本框字段都将处于活动状态,如果取消选中,则会执行相反的操作。我不太确定从哪里开始,抱歉。我将使用 php 来处理提交的数据。任何帮助将不胜感激。

【问题讨论】:

    标签: jquery arrays forms checkbox


    【解决方案1】:

    给定的标记你可以尝试

    $(function(){
    
      $(":checkbox").on("change",function(e){
    
       if($(this).is(":checked"))
          $(this).closest("div.box").find(":input").prop("disabled",false);
      else
         $(this).closest("div.box").find(":input:not(:checkbox)").prop("disabled",true);    
     });    
    });
    

    DEMO

    更新:

    如果你是动态生成表单,你可以像使用它一样

    $(document).on("change",":checkbox",function(e){
    ...
    // rest of the code remains the same 
    

    【讨论】:

    • 复选框在取消选中后被禁用.. 抱歉真的不是一个好的 jquery 编码器。
    • 谢谢,来自 3nigma 和 dfsq 的答案都很好。我注意到这两个答案都不适用于 jquery 版本 1.6.4 .. 我刚刚更新了我的 jquery 并且像一个魅力一样工作。
    • 根据您给出的答案,我怎样才能在检查时对子句[n][number] 字段进行自动编号?如果已经设置,则从子句[n][number] 获取当前自动编号,并增加/减少值?
    【解决方案2】:

    看看这个演示:http://jsfiddle.net/tAkGH/ 和脚本:

    $('body').on('change', '.clause_check', function() {
        $(this).closest('.box').find(':input:not(".clause_check")').prop('disabled', !$(this).is(':checked'));
    })
    

    【讨论】:

    • 抱歉,但是当我尝试使用我的实际表单(动态创建)时,什么也没有发生。但标记可能相同。
    • 在我将我的 jquery 版本 (1.6.4) 更新到 1.7.1 后终于让它工作了。它似乎不适用于我以前的 jquery 版本。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多