【问题标题】:Three Checkboxes, One must be selected to enable submit button, needs Jquery?三个复选框,必须选中一个才能启用提交按钮,需要Jquery吗?
【发布时间】:2010-04-29 17:44:49
【问题描述】:

我有 1-3 个复选框,默认情况下它们都被禁用。为了使提交按钮在复选框中处于活动状态,必须选中最小值。有人可以用 jquery sn-p 帮助我实现这一目标吗?我的标记看起来像这样,并且该站点使用了 jquery 1.42。请,谢谢!

<form action="/cart/add" method="post" id="pform">
  <h3 class="goudy">Make your selection:</h3>
  <ul id="variants">
    <li>
        <input type="checkbox" name="id[]" value="39601622" id="radio_39601622" style="vertical-align: middle;" class="required" />
        <label for="radio_39601622[]">$38.00 - Original Antique Photo</label>
    </li>

    <li>
        <input type="checkbox" name="id[]" value="39601632" id="radio_39601632" style="vertical-align: middle;" class="required" />
        <label for="radio_39601632[]">$8.99 - SCAN</label>
    </li>

    <li>
        <input type="checkbox" name="id" value="39777962" id="radio_39777962" style="vertical-align: middle;" class="required" />
        <label for="radio_39777962">$2.99 - Rigid Sleeve</label>  
    </li>
  </ul>

  <div class="buttons clearfix">
    <input type="image" src="../images/add-to-cart.png" name="add" value="Add to Cart" id="add" class="send-to-cart" />
  </div>    
</form>

【问题讨论】:

    标签: jquery forms input form-submit


    【解决方案1】:

    如果没有检查,另一种禁用表单按钮的方法!

    $(function() { 
        $('#add').attr('disabled','disabled');
        $('#pform input:checkbox').bind('click',function() {
            if($(this).is(':checked')) {
             $('#add').removeAttr('disabled');
            } else {
             $('#add').attr('disabled','disabled');
            }
       });
    });​
    

    【讨论】:

    • 很高兴看到你得到它!请问,你能检查一下最好的答案吗!? ;-)
    【解决方案2】:

    假设提交按钮一开始就被禁用(已测试):

    $(document).ready(function() {
    
        // disable submit once the DOM is ready
        $("input.send-to-cart").attr("disabled", "disabled");
        $("input.required:checkbox").click(function() {
            $("input.send-to-cart").attr("disabled", !$("input.required:checkbox:checked").length);
        });
    });
    

    【讨论】:

    • 这很好用,但我认为如果我从一开始就禁用该按钮,可能会出现可用性问题......想法?
    • 如果您想让按钮在没有 Javascript 的情况下工作,请使用 jQuery 禁用它,而不是在标记中使用 disabled="disabled"。我会编辑。
    • 我最终使用了它,因为它更短,但我认为 aSeptic 有更多空间来添加额外的钩子。一旦为我布置了基本功能,我就可以(几乎)与 jquery 混淆。你们所有人都很棒,我不知道我必须对答案进行评分,这不好,因为我不是专家,无法判断两者之间的细微差别。 karim79 和 aSeptik 在这里都有最好的答案,而且两者都“正常工作”,无需禁用标记中的任何内容。
    【解决方案3】:

    另一种方式:

    pform = null;
    numberSelected = 0;
    
    $(function(){
        pform = $("#pform");
        $("input[type=checkbox]", pform).click({
            if ($(this).is(":selected"))
                numberSelected++;
            else
                numberSelected--;
    
            if (numberSelected > 0)
                $('#add').removeAttr('disabled');
            else
                $('#add').attr('disabled', true);
        });
    });
    

    【讨论】:

    • 谢谢迈克!我喜欢这个,因为我不必预先禁用输入。
    【解决方案4】:

    试试这个:

    $(function(){
      if ($('input[type="checkbox"]:checked').length > 0)
      {
           // submit the form now
      }
    });
    

    【讨论】:

      【解决方案5】:

      我需要同样的功能,但在阅读了 aSeptik 的解决方案后我很怀疑,因为它似乎在任何时候选中复选框时启用按钮,而在未选中复选框时禁用按钮。我对代码的阅读表明,只要您仅通过选中和取消选中一个复选框来测试它,该解决方案就会出现工作——尝试选中一个复选框,然后再选中一个复选框,然后取消选中其中一个,只选中一个 - 即使选中了一个复选框,您也会看到您的按钮被禁用。我测试并确认是这样的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-20
        • 2010-10-25
        • 2014-05-13
        • 2016-04-17
        • 1970-01-01
        • 2015-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多