具有不确定状态的问号的三态复选框插件

纪尧姆·蒙施(Guillaume Munsch)

我正在开发一个网站,并且一直在寻找一个插件,该插件可以让我使用三个状态复选框。

不幸的是,我发现的所有内容(如此处:http : //extremefe.github.io/bootstrap-checkbox/)都具有“不确定”状态,为实心方块或破折号。我要把它当作一个问号?

有人对此有解决方案吗?

Praveen Kumar Purushothaman

您不能?作为的别名null

简而言之,此插件使用三个关键字来确定复选框的三种状态,即:

  • 已检查: true
  • 未选中: false
  • 中间的: null

所有这些都不等于undefined,从技术上讲,这不是nullJavaScript,可以用于boolean操作。要使用此插件,您只需要包括jQuery插件:

<script src="jquery.js"></script>
<script src="bootstrap-checkbox.js"></script>

要使用三态复选框,您只需要首先创建一个复选框:

<input type="checkbox" name="myCheck" id="myCheck" />

然后将其设为三态一:

$("#myCheck").checkbox().chbxChecked(null);

要从中获取值:

switch ($("#checkbox2").chbxChecked()) {
    case true:
        console.log("Checkbox is Checked!");
        break;
    case false:
        console.log("Checkbox is Unhecked!");
        break;
    case null:
        console.log("Checkbox is in the Intermediate!");
        break;
}

您可以在此处获得完整的代码:

$(document).ready( function () {
    $("#myCheck").checkbox().chbxChecked(null);
    switch ($("#checkbox2").chbxChecked()) {
        case true:
            console.log("Checkbox is Checked!");
            break;
        case false:
            console.log("Checkbox is Unhecked!");
            break;
        case null:
            console.log("Checkbox is in the Intermediate!");
            break;
    }
});

并将图标从更改icon-stopicon-question,请bootstrap-checkbox.js在行号上编辑源文件37

if (checked === null) {
  element.addClass('ambiguous');
  element.html('<i class="icon-stop"></i>');
} else if (checked) {

并将其更改为:

if (checked === null) {
  element.addClass('ambiguous');
  element.html('<i class="icon-question"></i>');
} else if (checked) {

希望这可以帮助!

小提琴:

/**
 * bootstrap-checkbox.js
 * (c) 2013~ Jiung Kang
 * Licensed under the Apache License, Version 2.0 (the "License");
 */

(function($) {
  "use strict";

  var replaceCheckboxElement = function(checkbox, element) {
    var value = element.val(),
        id = element.attr('id'),
        className = element.attr('class'),
        style = element.attr('style'),
        checked = !!element[0].checked,
        welNew = $('<div></div>');

    element.replaceWith(welNew);

    if (id) { welNew.attr('id', id) }
    if (className) { welNew.attr('class', className) }
    welNew.addClass('bootstrap-checkbox');
    if (style) { welNew.attr('style', style); }
    if (checked) { welNew.addClass('checked'); }

    checkbox.value = value;
    checkbox.checked = checked;
    checkbox.element = welNew;
  };

  var changeCheckView = function(element, checked) {
    element.removeClass('ambiguous');
    element.removeClass('checked');

    if (checked === null) {
      element.addClass('ambiguous');
      element.html('<i class="icon-question-sign"></i>');
    } else if (checked) {
      element.addClass('checked');
      element.html('<i class="icon-ok"></i>');
    } else {
      element.html('');
    }
  };

  var attachEvent = function(checkbox, element) {
    element.on('click', function(e) {
      var checked;
      if (checkbox.checked) {
        checked = false;
      } else if (checkbox.checked === false && checkbox.ambiguous === true){
        checked = null;
      } else {
        checked = true;
      }

      checkbox.checked = checked;
      changeCheckView(checkbox.element, checked);

      checkbox.element.trigger({
        type: 'check',
        value: checkbox.value,
        checked: checked,
        element: checkbox.element
      });
    });
  };

  var Checkbox = function(element, options) {
    replaceCheckboxElement(this, element);
    attachEvent(this, this.element);
    if (options && options.label) {
      attachEvent(this, $(options.label));
    }
  };

  $.fn.extend({
    checkbox : function(options) {
      var aReplaced = $(this.map(function () {
        var $this = $(this),
            checkbox = $this.data('checkbox');

        if (!checkbox) {
          checkbox = new Checkbox($this, options);
          checkbox.element.data('checkbox', checkbox);
        }

        return checkbox.element[0];
      }));

      aReplaced.selector = this.selector;
      return aReplaced;
    },

    chbxVal : function(value) {
      var $this = $(this[0]);
      var checkbox = $this.data('checkbox');

      if (!checkbox) {
        return;
      }
      if ($.type(value) === "undefined") {
        return checkbox.value;
      } else {
        checkbox.value = value;
        $this.data('checkbox', checkbox);
      }
    },

    chbxChecked : function(checked) {
      var $this = $(this[0]);
      var checkbox = $this.data('checkbox');

      if (!checkbox) {
        return;
      }
      if ($.type(checked) === "undefined") {
        return checkbox.checked;
      } else {
        checkbox.ambiguous = checked === null;
        changeCheckView($this, checked);

        checkbox.checked = checked;
        $this.data('checkbox', checkbox);
      }
    }
  });
})(jQuery);
$(document).ready(function () {
  $("#myCheck").checkbox().chbxChecked(null);
});
@import url("http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css");
@import url("http://extremefe.github.io/bootstrap-checkbox/css/bootstrap-checkbox.css");
body {font-family: 'Segoe UI'; margin: 10px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<label>
  <input type="checkbox" name="myCheck" id="myCheck" /> Click Me!
</label>

查看上面的工作演示!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在WPF三态复选框中捕获不确定状态

来自分类Dev

JavaFX三态复选框

来自分类Dev

如何在iOS XCode中具有“三态”复选框/开关?

来自分类Dev

Office 功能区中的三态复选框

来自分类Dev

为什么将具有不确定状态的复选框更改为未选中状态?

来自分类Dev

存储不确定的复选框状态

来自分类Dev

在angularjs中实现单个三态复选框的最佳方法是什么?

来自分类Dev

Javafx:如何在 TreeTableView 中实现三态复选框

来自分类Dev

从复选框Winforms检索不确定状态

来自分类Dev

是否可以在Microsoft TreeView Control 6.0(MSComctlLib.TreeCtrl.2)中模拟三态复选框?

来自分类Dev

Firemonkey复选框:Windows和MacOS平台上是否可以使用三态选项?

来自分类Dev

是否可以在Microsoft TreeView Control 6.0(MSComctlLib.TreeCtrl.2)中模拟三态复选框?

来自分类Dev

带有复选框和状态插件的jsTree忘记选中的复选框

来自分类Dev

如何将TreeView控件上的复选框更改为“不确定”状态?

来自分类Dev

如何自定义处于不确定状态的复选框的样式?

来自分类Dev

具有Viewholder和复选框状态保存的ListView

来自分类Dev

带有复选框的角材料树-获取检查和不确定的值

来自分类Dev

角度10复选框的值变得不确定

来自分类Dev

Vue.js 中的不确定复选框

来自分类Dev

带有javascript的Xforms-确定复选框处于选中状态还是未选中状态

来自分类Dev

复选框状态没有改变

来自分类Dev

正确确定自定义绘图的复选框状态

来自分类Dev

具有iTextsharp的PDF复选框

来自分类Dev

获取具有选中和未选中状态的所有复选框的列表

来自分类Dev

初始化一个不确定的复选框

来自分类Dev

三态切换两种状态(Javascript或jQuery)

来自分类Dev

Firefox插件SDK:带有多个复选框的提示

来自分类Dev

复选框的初始状态?

来自分类Dev

复选框状态jQuery

Related 相关文章

  1. 1

    在WPF三态复选框中捕获不确定状态

  2. 2

    JavaFX三态复选框

  3. 3

    如何在iOS XCode中具有“三态”复选框/开关?

  4. 4

    Office 功能区中的三态复选框

  5. 5

    为什么将具有不确定状态的复选框更改为未选中状态?

  6. 6

    存储不确定的复选框状态

  7. 7

    在angularjs中实现单个三态复选框的最佳方法是什么?

  8. 8

    Javafx:如何在 TreeTableView 中实现三态复选框

  9. 9

    从复选框Winforms检索不确定状态

  10. 10

    是否可以在Microsoft TreeView Control 6.0(MSComctlLib.TreeCtrl.2)中模拟三态复选框?

  11. 11

    Firemonkey复选框:Windows和MacOS平台上是否可以使用三态选项?

  12. 12

    是否可以在Microsoft TreeView Control 6.0(MSComctlLib.TreeCtrl.2)中模拟三态复选框?

  13. 13

    带有复选框和状态插件的jsTree忘记选中的复选框

  14. 14

    如何将TreeView控件上的复选框更改为“不确定”状态?

  15. 15

    如何自定义处于不确定状态的复选框的样式?

  16. 16

    具有Viewholder和复选框状态保存的ListView

  17. 17

    带有复选框的角材料树-获取检查和不确定的值

  18. 18

    角度10复选框的值变得不确定

  19. 19

    Vue.js 中的不确定复选框

  20. 20

    带有javascript的Xforms-确定复选框处于选中状态还是未选中状态

  21. 21

    复选框状态没有改变

  22. 22

    正确确定自定义绘图的复选框状态

  23. 23

    具有iTextsharp的PDF复选框

  24. 24

    获取具有选中和未选中状态的所有复选框的列表

  25. 25

    初始化一个不确定的复选框

  26. 26

    三态切换两种状态(Javascript或jQuery)

  27. 27

    Firefox插件SDK:带有多个复选框的提示

  28. 28

    复选框的初始状态?

  29. 29

    复选框状态jQuery

热门标签

归档