三个Checkbox,一个必须选择启用提交按钮,需要Jquery?

时间:2010-04-29 17:44:49

标签: jquery forms input form-submit

我有1到3个复选框,默认情况下它们都被禁用。为了使提交按钮处于活动状态,必须选择最小复选框。有人可以帮助我使用jquery片段来实现这一目标吗?我的标记看起来像这样,网站使用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>

5 个答案:

答案 0 :(得分:3)

如果没有选中,则禁用表单按钮的另一种方法!

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

答案 1 :(得分: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);
    });
});

答案 2 :(得分:1)

另一种方式:

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);
    });
});

答案 3 :(得分:0)

试试这个:

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

答案 4 :(得分:0)

我需要相同的功能,但在阅读了一个解决方案之后,我很怀疑,因为它似乎在任何时候选中复选框并启用按钮,并且只要取消选中复选框就会禁用该按钮。我对代码的阅读表明只要您只通过选中并取消选中一个复选框来测试它,解决方案将显示工作 - 尝试选中一个复选框,然后选择一秒,然后取消选中其中一个复选框,只选中一个 - 即使选中了其中一​​个复选框,您也会看到按钮被禁用。我测试并证实了这种情况。