【问题标题】:Issue in checkbox on check or uncheck选中或取消选中复选框中的问题
【发布时间】:2018-05-08 10:43:56
【问题描述】:

(1) 当我点击复选框时,模式打开

(2) 当滚动条到达底部时,启用一个按钮并单击该按钮,然后选中复选框

问题

当我再次单击复选框时,复选框未被选中。它仍然处于选中状态

有没有办法当我第一次点击复选框然后模式打开时,复选框在点击按钮上被选中,当我第二次点击复选框然后模式没有打开时,复选框被取消选中

这是我的 jquery 代码

$(document).ready(function() {
   var status_box = null;

    $('#termsChk').click(function(e){
    e.preventDefault();
    status_box = this;
    if($(this).is(':checked')) {
     $('#termsModal').modal('show');
    } 
 });

    $('#agreeBtn').click(function(){
      $(status_box).prop('checked', !status_box.checked);
    });

     $("#termsModal").modal({
        show: false,
        backdrop: 'static'
    });
 });

HTML 代码

       <div class="form-check form-check-radios">
               <label class="form-check-label">
                <input class="form-check-input number status" type="checkbox" name="" value="" id="termsChk">I agree with
                <span class="form-check-sign"></span>
                </label> <a style="color: #f96332;">"Terms and Condition"</a>   
           <input type="hidden" id="termsValue" name="termsValue" value="">
     </div>


            <!-----Terms and Condition Modal----->

            <div class="modal fade" id="termsModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
     <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
    <h4 class="modal-title" id="myModalLabel">Terms and Conditions</h4>
      </div>
        <div class="modal-body modelheight1" id="modalBody1">
              <p style="text-align:justify;" id="modalTerms">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum non ipsum at magna finibus rhoncus a vitae leo. Phasellus id nibh luctus, gravida elit pellentesque, consectetur sem. Nulla fringilla, nulla et egestas rhoncus, sem risus iaculis neque, eget aliquam mauris erat vitae nulla.
    </p>
         </div>
          <div class="modal-footer">
           <button class="btn btn-primary" data-dismiss="modal" disabled aria-hidden="true" id="agreeBtn">Agree</button>
        </div>
    </div>
 </div>

【问题讨论】:

    标签: javascript jquery html checkbox


    【解决方案1】:

    您需要删除e.preventDefault();,以便复选框可以完成它的操作并影响带有选中和未选中标记的HTML视图。如果您删除它,那么它将完全按照您的预期工作。以下是您提供的代码的工作示例。 (按esc 删除示例中的引导模式)

    $(document).ready(function() {
       var status_box = null;
        $('#termsChk').click(function(e){
        status_box = this;
        if($(this).is(':checked')) {
         $('#termsModal').modal('show');
        } 
     });
    
      $('#agreeBtn').click(function(){
        $(status_box).prop('checked', !status_box.checked);
      });
    
       $("#termsModal").modal({
          show: false,
          backdrop: 'static'
      });
    });
    <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.3.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <div class="form-check form-check-radios">
                   <label class="form-check-label">
                    <input class="form-check-input number status" type="checkbox" name="" value="" id="termsChk">I agree with
                    <span class="form-check-sign"></span>
                    </label> <a style="color: #f96332;">"Terms and Condition"</a>   
               <input type="hidden" id="termsValue" name="termsValue" value="">
         </div>
    
    
                <!-----Terms and Condition Modal----->
    
                <div class="modal fade" id="termsModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
         <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
        <h4 class="modal-title" id="myModalLabel">Terms and Conditions</h4>
          </div>
            <div class="modal-body modelheight1" id="modalBody1">
                  <p style="text-align:justify;" id="modalTerms">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum non ipsum at magna finibus rhoncus a vitae leo. Phasellus id nibh luctus, gravida elit pellentesque, consectetur sem. Nulla fringilla, nulla et egestas rhoncus, sem risus iaculis neque, eget aliquam mauris erat vitae nulla.
        </p>
             </div>
              <div class="modal-footer">
               <button class="btn btn-primary" data-dismiss="modal" disabled aria-hidden="true" id="agreeBtn">Agree</button>
            </div>
        </div>
     </div>

    【讨论】:

    • 感谢您的回复,但我仍然有一个问题,我想点击同意按钮,然后选中复选框
    • 这个@Arslan 是什么意思。请进一步详细说明。
    • 第一次打开模态框时,模态框上有一个按钮当我点击按钮时,复选框被选中
    • @Arslan 在模式上被禁用,另一个选中的复选框在哪里?
    • 是的,它被禁用,因为默认情况下在输入字段中禁用
    【解决方案2】:

    event.preventDefault() 阻止事件发射器的默认行为。

    我不认为当你点击它时你的复选框是否会被首先选中,因为你正在使用e.preventDefault();阻止它的默认行为

    这个e.preventDefault(); 不会让复选框被选中或取消选中

    $('#termsChk').click(function(e){
         e.preventDefault();
        })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <input class="form-check-input number status" type="checkbox" name="" value="" id="termsChk">I agree with

    所以,在代码中手动去掉这行检查

    【讨论】:

      猜你喜欢
      • 2011-10-26
      • 2016-03-21
      • 1970-01-01
      • 2013-10-16
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      相关资源
      最近更新 更多