【问题标题】:Enable/disable submit button when any/no checkbox in form is checked选中表单中的任何/没有复选框时启用/禁用提交按钮
【发布时间】:2016-11-22 03:16:42
【问题描述】:

我正在尝试使用 jQuery 动态启用/禁用表单的提交按钮。

HTML:

<form id="user-add-to-group">
  <table class="group-list">
    <tbody>
      <tr>
        <th>Voornaam</th>
        <th>Achternaam</th>
        <th>S/P-nummer</th>
        <th>Email</th>
        <th>Type</th>
      </tr>
      <tr>   
        <td>Name</td>
        <td>Surname</td>
        <td>No.</td>
        <td>email@bs.com</td>
        <td>student</td>
        <td><input type="checkbox" name="user_add_to_group[]" value="75F0CE8F-4B6F-4E17-BC7B-0B06AAD84625"></td>
      </tr>
    </tbody>
  </table>
  <button disabled="disabled" type="button" id="participant_add_btn" name="participant_add_btn" class="btn btn-primary">Add</button>                            
</form>

还有 jQuery:

$('table.group-list tr').on("click", function(){
  $(this).find("input[type=checkbox]").trigger('click');
    if($("#user-add-to-group input[type=checkbox]:checked").length>0){
      $("#participant_add_btn").prop("disabled","false");
    }
    else {
      $("#participant_add_btn").prop("disabled","disabled");
    }
});

我想让整个表格行可点击,所以当点击 tr 时 jQuery 会触发点击事件。这可行,但我似乎无法弄清楚为什么我的按钮之后不会启用。我想在表单中的任何复选框被选中时启用它,并在它们都没有时禁用它。

如果需要更多信息,请告诉我。

【问题讨论】:

    标签: javascript jquery html forms


    【解决方案1】:

    在设置属性值时,您需要传递布尔参数而不是字符串。

    $('#participant_add_btn').prop('disabled', false);
    

    或使用.removeAttr("disabled")

    $('#participant_add_btn').removeAttr("disabled");
    

    您的代码在单击复选框时将不起作用。为此,您需要检查被点击元素的目标,如果它已经是复选框,则不要为其触发点击事件:

    工作片段:

    $('table.group-list tr').on("click", function(e){
      if($(e.target).is(':not(:checkbox)'))
       $(this).find("input[type=checkbox]").trigger('click');
       $("#participant_add_btn").prop("disabled",$("#user-add-to-group input[type=checkbox]:checked").length == 0);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form id="user-add-to-group">
      <table class="group-list">
        <tbody>
          <tr>
            <th>Voornaam</th>
            <th>Achternaam</th>
            <th>S/P-nummer</th>
            <th>Email</th>
            <th>Type</th>
          </tr>
          <tr>   
            <td>Name</td>
            <td>Surname</td>
            <td>No.</td>
            <td>email@bs.com</td>
            <td>student</td>
            <td><input type="checkbox" name="user_add_to_group[]" value="75F0CE8F-4B6F-4E17-BC7B-0B06AAD84625"></td>
          </tr>
        </tbody>
      </table>
      <button disabled="disabled" type="button" id="participant_add_btn" name="participant_add_btn" class="btn btn-primary">Add</button>                            
    </form>

    【讨论】:

    • 使用Boolean(true) 而不是"disabled"
    【解决方案2】:
    $('#toggle').click(function () {
    //check if checkbox is checked
    if ($(this).is(':checked')) {
    
        $('#sendNewSms').removeAttr('disabled'); //enable input
    
    } else {
        $('#sendNewSms').attr('disabled', true); //disable input
    }
    

    });

    Check here.

    【讨论】:

      【解决方案3】:

      jQuery.prop 期望值为Boolean,任何不为空的string 都被视为true,因为它是真实值

      $('table.group-list tr').on("click", function() {
        $(this).find("input[type=checkbox]").trigger('click');
        $("#participant_add_btn").prop("disabled", !$("#user-add-to-group input[type=checkbox]:checked").length);
      });
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
      <form id="user-add-to-group">
        <table class="group-list">
          <tbody>
            <tr>
              <th>Voornaam</th>
              <th>Achternaam</th>
              <th>S/P-nummer</th>
              <th>Email</th>
              <th>Type</th>
            </tr>
            <tr>
              <td>Name</td>
              <td>Surname</td>
              <td>No.</td>
              <td>email@bs.com</td>
              <td>student</td>
              <td>
                <input type="checkbox" name="user_add_to_group[]" value="75F0CE8F-4B6F-4E17-BC7B-0B06AAD84625">
              </td>
            </tr>
          </tbody>
        </table>
        <button disabled="disabled" type="button" id="participant_add_btn" name="participant_add_btn" class="btn btn-primary">Add</button>
      </form>

      【讨论】:

      • 接受最有效的代码。优雅的。谢谢!
      • @LennartKloppenburg 很高兴为您提供帮助!
      猜你喜欢
      • 2014-02-19
      • 2021-08-21
      • 2019-05-23
      • 2014-05-13
      • 1970-01-01
      • 2011-07-24
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多