选中复选框时如何打开引导模式(当勾选复选框时)

Posted

技术标签:

【中文标题】选中复选框时如何打开引导模式(当勾选复选框时)【英文标题】:How to open a bootstrap modal when checked a chec-box (when a tick is placed on a check box) 【发布时间】:2015-06-26 16:05:00 【问题描述】:

我有一个自定义复选框。 我想要的是在选中复选框时打开引导模式。 我希望像单击按钮一样打开引导模式。 希望你能理解我的问题。 我该怎么做。

html 代码

/*
          ----------------------------------------------
                              CHECKBOX
          ----------------------------------------------
*/


/* Base for label styling */

[type="checkbox"]:not(:checked),
[type="checkbox"]:checked 
  position: absolute;
  left: -9999px;


[type="checkbox"]:not(:checked)+label,
[type="checkbox"]:checked+label 
  position: relative;
  padding-left: 25px;
  cursor: pointer;



/* checkbox aspect */

[type="checkbox"]:checked+label:before 
  content: '';
  position: absolute;
  left: 0;
  top: 0px;
  width: 20px;
  height: 20px;
  //border: 1px solid #aaa;
  background: #09ad7e;
  border-radius: 3px;
  //box-shadow: inset 0 1px 3px rgba(0,0,0,.3)


[type="checkbox"]:not(:checked)+label:before 
  content: '';
  position: absolute;
  left: 0;
  top: 0px;
  width: 20px;
  height: 20px;
  //border: 1px solid #fff;
  background: #eee;
  border-radius: 3px;
  //box-shadow: inset 0 1px 3px rgba(0,0,0,.3)



/* checked mark aspect */

[type="checkbox"]:checked+label:after 
  content: '✔';
  position: absolute;
  top: 0;
  left: 4px;
  font-size: 14px;
  color: #f8f8f8;
  transition: all .2s;


[type="checkbox"]:not(:checked)+label:after 
  content: '✔';
  position: absolute;
  top: 0;
  left: 4px;
  font-size: 14px;
  color: #ddd;
  transition: all .2s;



/* checked mark aspect changes */

[type="checkbox"]:not(:checked)+label:after 
  opacity: 1;
  transform: scale(1);


[type="checkbox"]:checked+label:after 
  opacity: 1;
  transform: scale(1);



/* disabled checkbox */

[type="checkbox"]:disabled:not(:checked)+label:before,
[type="checkbox"]:disabled:checked+label:before 
  box-shadow: none;
  border-color: #bbb;
  background-color: #ddd;


[type="checkbox"]:disabled:checked+label:after 
  color: #999;


[type="checkbox"]:disabled+label 
  color: #aaa;



/* accessibility */

[type="checkbox"]:checked:focus+label:before,
[type="checkbox"]:not(:checked):focus+label:before 
  outline: none !important;



/* hover style just for information */

label:hover:before 
  //border: 1px solid #4778d9!important;


[type="checkbox"]:not(:checked)+label 
  color: #ddd;
<input type="checkbox" id="test7" checked="checked" />
<label for="test7">Custom Avalability</label>
<br /><br />
<input type="checkbox" id="test6" />
<label for="test6">Manual</label>

【问题讨论】:

【参考方案1】:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/js/bootstrap.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<input type="checkbox" id="test7" checked="checked"/>
<label for="test7">Custom Avalability</label>
<br /><br />
<input type="checkbox" id="test6"/>
<label for="test6">Manual</label>


<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        Checkbox is checked
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

【讨论】:

能否请您提供一些解释【参考方案2】:

这里是 JS 小提琴。让我知道您是否需要对其进行更多更改。

http://jsfiddle.net/k3aogpv0/5/

带有简单的自定义数据属性:

 <input type="checkbox" id="test7" checked="checked" data-toggle="modal" data-target="#myModal" />

如果您不想取消选中,请使用 javascript

 ​$("[id^=test]").on("change", function(e)
    if(e.target.checked)
    $('#myModal').modal();
  
 );

【讨论】:

我已经尝试过了,但我想要的是仅在选中而不是未选中时打开模式。在这种情况下,模式会在两个触发事件中打开。 您可以查看以下答案。 :) 感谢您的尝试@zan :)【参考方案3】:

您可以检查是否在更改input[type="checkbox"] 时检查输入并显示模态。

$('input[type="checkbox"]').on('change', function(e)
   if(e.target.checked)
     $('#myModal').modal();
   
);
      /*
      ----------------------------------------------
                          CHECKBOX
      ----------------------------------------------
      */
      /* Base for label styling */
      [type="checkbox"]:not(:checked),
      [type="checkbox"]:checked 
        position: absolute;
        left: -9999px;
      
      [type="checkbox"]:not(:checked) + label,
      [type="checkbox"]:checked + label 
        position: relative;
        padding-left: 25px;
        cursor: pointer;
      

      /* checkbox aspect */

      [type="checkbox"]:checked + label:before 
        content: '';
        position: absolute;
        left:0; top: 0px;
        width: 20px; height: 20px;
        //border: 1px solid #aaa;
        background: #09ad7e;
        border-radius: 3px;
        //box-shadow: inset 0 1px 3px rgba(0,0,0,.3)
      
      [type="checkbox"]:not(:checked) + label:before 
      content: '';
        position: absolute;
        left:0; top: 0px;
        width: 20px; height: 20px;
        //border: 1px solid #fff;
        background: #eee;
        border-radius: 3px;
        //box-shadow: inset 0 1px 3px rgba(0,0,0,.3)
      
      /* checked mark aspect */

      [type="checkbox"]:checked + label:after 
        content: '✔';
        position: absolute;
        top: 0; left: 4px;
        font-size: 14px;
        color: #f8f8f8;
        transition: all .2s;
      
      [type="checkbox"]:not(:checked) + label:after 
      content: '✔';
        position: absolute;
        top: 0; left: 4px;
        font-size: 14px;
        color: #ddd;
        transition: all .2s;

      
      /* checked mark aspect changes */
      [type="checkbox"]:not(:checked) + label:after 
        opacity: 1;
        transform: scale(1);
      
      [type="checkbox"]:checked + label:after 
        opacity: 1;
        transform: scale(1);
      
      /* disabled checkbox */
      [type="checkbox"]:disabled:not(:checked) + label:before,
      [type="checkbox"]:disabled:checked + label:before 
        box-shadow: none;
        border-color: #bbb;
        background-color: #ddd;
      
      [type="checkbox"]:disabled:checked + label:after 
        color: #999;
      
      [type="checkbox"]:disabled + label 
        color: #aaa;
      
      /* accessibility */
      [type="checkbox"]:checked:focus + label:before,
      [type="checkbox"]:not(:checked):focus + label:before 
       outline: none !important;
      

      /* hover style just for information */
      label:hover:before 
        //border: 1px solid #4778d9!important;
      

      [type="checkbox"]:not(:checked) + label 
      color: #ddd;
      
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/js/bootstrap.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<input type="checkbox" id="test7" checked="checked"/>
<label for="test7">Custom Avalability</label>
<br /><br />
<input type="checkbox" id="test6"/>
<label for="test6">Manual</label>


<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        Checkbox is checked
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

【讨论】:

谢谢@anpsmn 这就是我想要的。 :) 这个答案的坏处是,如果您在模式上按取消,复选框将被选中而不是取消选中 @anpsmn 打开后如何从模式中的复选框中获取数据值? @RohitKishore 试试这个link

以上是关于选中复选框时如何打开引导模式(当勾选复选框时)的主要内容,如果未能解决你的问题,请参考以下文章

jq 全选反选判断选中的条数

引导程序如何确定复选框/单选按钮的选中状态

当我取消选中自定义树视图中的子节点复选框时,如何取消选中所有父节点

如何使复选框默认选中?在 Woocommerce 结帐中

选中复选框时动态更改引导进度条值

选中角度复选框时无法关闭模式