Browse Source

Fixes #1929, radio checkboxes remove checked class from other radios on checked

pull/2034/head
jlukic 9 years ago
parent
commit
6dfc5250c1
1 changed files with 27 additions and 12 deletions
  1. 39
      src/definitions/modules/checkbox.js

39
src/definitions/modules/checkbox.js

@ -59,8 +59,6 @@ $.fn.checkbox = function(parameters) {
module.create.label(); module.create.label();
module.add.events(); module.add.events();
console.log($input);
if( module.is.checked() ) { if( module.is.checked() ) {
module.set.checked(); module.set.checked();
if(settings.fireOnInit) { if(settings.fireOnInit) {
@ -156,9 +154,18 @@ $.fn.checkbox = function(parameters) {
} }
}, },
get: {
radios: function() {
return $('input[name="' + module.get.name() + '"]').closest(selector.checkbox);
},
name: function() {
return $input.attr('name');
}
},
is: { is: {
radio: function() { radio: function() {
return $module.hasClass(className.radio);
return ($input.hasClass(className.radio) || $input.attr('type') == 'radio');
}, },
checked: function() { checked: function() {
return $input.prop('checked') !== undefined && $input.prop('checked'); return $input.prop('checked') !== undefined && $input.prop('checked');
@ -182,6 +189,14 @@ $.fn.checkbox = function(parameters) {
set: { set: {
checked: function() { checked: function() {
var
$radios
;
if( module.is.radio() ) {
$radios = module.get.radios();
module.debug('Unchecking other radios', $radios);
$radios.removeClass(className.checked);
}
$module.addClass(className.checked); $module.addClass(className.checked);
}, },
tab: function() { tab: function() {
@ -245,14 +260,14 @@ $.fn.checkbox = function(parameters) {
module.debug('Enabling checkbox functionality'); module.debug('Enabling checkbox functionality');
$module.removeClass(className.disabled); $module.removeClass(className.disabled);
$input.prop('disabled', false); $input.prop('disabled', false);
settings.onEnabled.call($input.get());
settings.onEnabled.call($input[0]);
}, },
disable: function() { disable: function() {
module.debug('Disabling checkbox functionality'); module.debug('Disabling checkbox functionality');
$module.addClass(className.disabled); $module.addClass(className.disabled);
$input.prop('disabled', 'disabled'); $input.prop('disabled', 'disabled');
settings.onDisabled.call($input.get());
settings.onDisabled.call($input[0]);
}, },
check: function() { check: function() {
@ -263,8 +278,8 @@ $.fn.checkbox = function(parameters) {
; ;
module.set.checked(); module.set.checked();
$input.trigger('blur'); $input.trigger('blur');
settings.onChange.call($input.get());
settings.onChecked.call($input.get());
settings.onChange.call($input[0]);
settings.onChecked.call($input[0]);
}, },
uncheck: function() { uncheck: function() {
@ -275,13 +290,12 @@ $.fn.checkbox = function(parameters) {
; ;
module.remove.checked(); module.remove.checked();
$input.trigger('blur'); $input.trigger('blur');
settings.onChange.call($input.get());
settings.onUnchecked.call($input.get());
settings.onChange.call($input[0]);
settings.onUnchecked.call($input[0]);
}, },
toggle: function(event) { toggle: function(event) {
if( !module.can.change() ) { if( !module.can.change() ) {
console.log(module.can.change());
if(!module.is.radio()) { if(!module.is.radio()) {
module.debug('Checkbox is read-only or disabled, ignoring toggle'); module.debug('Checkbox is read-only or disabled, ignoring toggle');
} }
@ -503,8 +517,9 @@ $.fn.checkbox.settings = {
}, },
selector : { selector : {
input : '> input[type="checkbox"], > input[type="radio"]',
label : '> label'
checkbox : '.ui.checkbox',
input : '> input[type="checkbox"], > input[type="radio"]',
label : '> label'
} }
}; };

Loading…
Cancel
Save