瀏覽代碼

Added "allowAllOff" option.
It makes it possible to uncheck all radiobuttons in a group.
Defaults to false to mimic the behaviour of browser's default radiobutton.
Does not affect checkboxes.

George K 11 年之前
父節點
當前提交
516ce3a688
共有 3 個文件被更改,包括 21 次插入3 次删除
  1. 12 2
      dist/js/bootstrap-switch.js
  2. 0 0
      dist/js/bootstrap-switch.min.js
  3. 9 1
      src/coffee/bootstrap-switch.coffee

+ 12 - 2
dist/js/bootstrap-switch.js

@@ -44,7 +44,8 @@
           offText: this.$element.data("off-text"),
           labelText: this.$element.data("label-text"),
           baseClass: this.$element.data("base-class"),
-          wrapperClass: this.$element.data("wrapper-class")
+          wrapperClass: this.$element.data("wrapper-class"),
+          allowAllOff: this.$element.data("allow-all-off")
         }, options);
         this.$wrapper = $("<div>", {
           "class": (function(_this) {
@@ -120,7 +121,7 @@
         if (this.options.disabled || this.options.readonly || this.options.indeterminate) {
           return this.$element;
         }
-        if (this.options.state && this.$element.is(':radio')) {
+        if (this.options.state && !this.options.allowAllOff && this.$element.is(':radio')) {
           return this.$element;
         }
         value = !!value;
@@ -285,6 +286,14 @@
         return this.$element;
       };
 
+      BootstrapSwitch.prototype.allowAllOff = function(value) {
+        if (typeof value === "undefined") {
+          return this.options.allowAllOff;
+        }
+        this.options.allowAllOff = value;
+        return this.$element;
+      };
+
       BootstrapSwitch.prototype.onInit = function(value) {
         if (typeof value === "undefined") {
           return this.options.onInit;
@@ -514,6 +523,7 @@
       labelText: "&nbsp;",
       baseClass: "bootstrap-switch",
       wrapperClass: "wrapper",
+      allowAllOff: false,
       onInit: function() {},
       onSwitchChange: function() {}
     };

File diff suppressed because it is too large
+ 0 - 0
dist/js/bootstrap-switch.min.js


+ 9 - 1
src/coffee/bootstrap-switch.coffee

@@ -18,6 +18,7 @@ do ($ = window.jQuery, window) ->
         labelText: @$element.data "label-text"
         baseClass: @$element.data "base-class"
         wrapperClass: @$element.data "wrapper-class"
+        allowAllOff: @$element.data "allow-all-off"
       , options
       @$wrapper = $ "<div>",
         class: do =>
@@ -73,7 +74,7 @@ do ($ = window.jQuery, window) ->
     state: (value, skip) ->
       return @options.state if typeof value is "undefined"
       return @$element if @options.disabled or @options.readonly or @options.indeterminate
-      return @$element if @options.state and @$element.is ':radio'
+      return @$element if @options.state and not @options.allowAllOff and @$element.is ':radio'
 
       value = not not value
 
@@ -204,6 +205,12 @@ do ($ = window.jQuery, window) ->
       @options.wrapperClass = value
       @$element
 
+    allowAllOff: (value) ->
+      return @options.allowAllOff if typeof value is "undefined"
+
+      @options.allowAllOff = value
+      @$element
+
     onInit: (value) ->
       return @options.onInit if typeof value is "undefined"
 
@@ -378,6 +385,7 @@ do ($ = window.jQuery, window) ->
     labelText: "&nbsp;"
     baseClass: "bootstrap-switch"
     wrapperClass: "wrapper"
+    allowAllOff: false
     onInit: ->
     onSwitchChange: ->
 

Some files were not shown because too many files changed in this diff