【问题标题】:Check only the checkbox if Yes button was clicked on bootstrap modal如果在引导模式上单击“是”按钮,则仅选中复选框
【发布时间】:2017-05-11 22:18:14
【问题描述】:

如果我想选中一个复选框,那么如果在引导模式上单击“YES”按钮,则必须选中该复选框,如果单击“NO”按钮则保持取消选中状态。

另一方面也是如此,如果要取消选中一个复选框,那么如果在引导模式上单击“是”按钮,则该复选框必须取消选中并保持检查是否单击了“否”按钮。

HTML

  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class="container">
    <label class="checkbox-inline">
      <input type="checkbox" value="" class="status">John Doe
    </label>
    <label class="checkbox-inline">
      <input type="checkbox" value="" class="status" checked>James Doe
    </label>

  <!-- Activate -->
  <div class="modal fade" id="activate" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Activate?</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default btn-yes" data-dismiss="modal">Yes</button>
          <button type="button" class="btn btn-default btn-no" data-dismiss="modal">No</button>           </div>
      </div>

    </div>
  </div>

  <!-- Deactivate -->
  <div class="modal fade" id="deactivate" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Deactivate?</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default btn-yes" data-dismiss="modal">Yes</button>
          <button type="button" class="btn btn-default btn-no" data-dismiss="modal">No</button>           </div>
      </div>

    </div>
  </div>
</div>

JQUERY

$('.status').click(function(){
    if($(this).is(':checked')) {
        $('#activate').modal('show');
    } else {
        $('#deactivate').modal('show');
    }
});

JSFIDDLE

https://jsfiddle.net/br86rjby/

这样说 http://jsfiddle.net/dfKEZ/

但只有它应该是引导模式

感谢您的帮助!!!

【问题讨论】:

    标签: jquery html twitter-bootstrap checkbox


    【解决方案1】:

    您可以保存单击的复选框并返回false 以防止其更改状态。然后根据对话框中按下的按钮来勾选或取消勾选:

    var clickedCheckox;
    
    $('.status').click(function(){
    	clickedCheckbox = $(this);
      if(clickedCheckbox.is(':checked')) {
        $('#activate').modal('show');
      } else {
        $('#deactivate').modal('show');
      }
    
      return false;
    });
    
    $("#activateBtn").click(function() {
    	clickedCheckbox.prop("checked", true);
    });
    
    $("#deactivateBtn").click(function() {
    	clickedCheckbox.prop("checked", false);
    });
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    
    <div class="container">
        <label class="checkbox-inline">
          <input type="checkbox" id="checkboxJohn" value="" class="status">John Doe
        </label>
        <label class="checkbox-inline">
          <input type="checkbox" id="checkboxJames" value="" class="status" checked>James Doe
        </label>
    
      <!-- Activate -->
      <div class="modal fade" id="activate" role="dialog">
        <div class="modal-dialog">
        
          <!-- Modal content-->
          <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal">&times;</button>
              <h4 class="modal-title">Modal Header</h4>
            </div>
            <div class="modal-body">
              <p>Activate?</p>
            </div>
            <div class="modal-footer">
              <button id="activateBtn" type="button" class="btn btn-default btn-yes" data-dismiss="modal">Yes</button>
              <button type="button" class="btn btn-default btn-no" data-dismiss="modal">No</button>           </div>
          </div>
          
        </div>
      </div>
      
      <!-- Deactivate -->
      <div class="modal fade" id="deactivate" role="dialog">
        <div class="modal-dialog">
        
          <!-- Modal content-->
          <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal">&times;</button>
              <h4 class="modal-title">Modal Header</h4>
            </div>
            <div class="modal-body">
              <p>Deactivate?</p>
            </div>
            <div class="modal-footer">
              <button id="deactivateBtn" type="button" class="btn btn-default btn-yes" data-dismiss="modal">Yes</button>
              <button type="button" class="btn btn-default btn-no" data-dismiss="modal">No</button>           </div>
          </div>
          
        </div>
      </div>
    </div>

    【讨论】:

      【解决方案2】:

      如果您不希望复选框在单击时更改其状态,则应使用.preventDefault()

      // variable will hold a checkbox:
      var status_box = null;
      
      $('.status').click(function(event){
        event.preventDefault();
        // set which checkbox has been clicked:
        status_box = this;
        if($(this).is(':checked')) {
          $('#activate').modal('show');
        } else {
          $('#deactivate').modal('show');
        }
      });
      

      然后为modal里面的按钮注册click事件处理程序:

      $('.btn-yes').click(function(){
          $(status_box).prop('checked', !status_box.checked);
      });
      

      JSFiddle Demo


      或者,您可以通过将单击的复选框存储在'.btn-yes' 按钮的data-* attribute 中来摆脱 status_box 变量:

      $('.status').click(function(event){
        event.preventDefault();
        $('.btn-yes').data('status_box', this);
        $(this.checked ? '#activate' : '#deactivate').modal('show');
      });
      
      $('.btn-yes').click(function(){
        var box = $(this).data('status_box');
        box.checked = !box.checked;
      });
      

      Demo

      【讨论】:

        猜你喜欢
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 2018-02-14
        • 2023-03-21
        • 1970-01-01
        • 2019-04-01
        • 1970-01-01
        • 2016-08-22
        相关资源
        最近更新 更多