So, für alle die das Problem auch haben:
Gefixte Version von flatui-checkbox.js v0.0.2:
/* =============================================================
* flatui-checkbox.js v0.0.2
* ============================================================ */
!function ($) {
/* CHECKBOX PUBLIC CLASS DEFINITION
* ============================== */
var Checkbox = function (element, options) {
this.init(element, options);
}
Checkbox.prototype = {
constructor: Checkbox
, init: function (element, options) {
var $el = this.$element = $(element)
this.options = $.extend({}, $.fn.checkbox.defaults, options);
$el.before(this.options.template);
this.setState();
}
, setState: function () {
var $el = this.$element
, $parent = $el.closest('.checkbox');
$el.prop('disabled') && $parent.addClass('disabled');
$el.prop('checked') && $parent.addClass('checked');
}
, toggle: function () {
var ch = 'checked'
, $el = this.$element
, $parent = $el.closest('.checkbox')
, checked = $el.prop(ch)
, e = $.Event('toggle')
if ($el.prop('disabled') == false) {
$parent.toggleClass(ch) && checked ? $el.prop(ch, false) : $el.prop(ch, true);
$el.trigger(e).trigger('change');
}
}
, setCheck: function (option) {
var d = 'disabled'
, ch = 'checked'
, $el = this.$element
, $parent = $el.closest('.checkbox')
, checkAction = option == 'check' ? true : false
, e = $.Event(option)
$parent[checkAction ? 'addClass' : 'removeClass' ](ch) && checkAction ? $el.prop(ch, true) : $el.prop(ch, false);
$el.trigger(e).trigger('change');
}
}
/* CHECKBOX PLUGIN DEFINITION
* ======================== */
var old = $.fn.checkbox
$.fn.checkbox = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('checkbox')
, options = $.extend({}, $.fn.checkbox.defaults, $this.data(), typeof option == 'object' && option);
if (!data) $this.data('checkbox', (data = new Checkbox(this, options)));
if (option == 'toggle') data.toggle()
if (option == 'check' || option == 'uncheck') data.setCheck(option)
else if (option) data.setState();
});
}
$.fn.checkbox.defaults = {
template: '<span class="icons"><span class="first-icon fui-checkbox-unchecked"></span><span class="second-icon fui-checkbox-checked"></span></span>'
}
/* CHECKBOX NO CONFLICT
* ================== */
$.fn.checkbox.noConflict = function () {
$.fn.checkbox = old;
return this;
}
/* CHECKBOX DATA-API
* =============== */
$(document).on('click.checkbox.data-api', '[data-toggle^=checkbox], .checkbox', function (e) {
var $checkbox = $(e.target);
e && e.preventDefault() && e.stopPropagation();
if (!$checkbox.hasClass('checkbox')) $checkbox = $checkbox.closest('.checkbox');
$checkbox.find(':checkbox').checkbox('toggle');
});
$(function () {
$('[data-toggle="checkbox"]').each(function () {
var $checkbox = $(this);
$checkbox.checkbox();
});
});
}(window.jQuery);
Das Original hatte beim Umschalten der Checkbox am Attribut checked rumgespielt, das eigentlich nur für den DEFAULT Wert zuständig ist. Der aktuelle wirkliche Wert der Checkbox ist in der Property gespeichert.
Jetzt funktioniert auch der code problemlos die checkbox auszulesen mit:
$(document).ready(function() {
$('input[name="inc_products_descriptions_only"]').on('change', function(){
alert($(this).is(':checked'));
});
});
Laut diversen Posts hat dieser Mist auch Einfluss auf die Werte die an Formulare abgegeben werden! Auch Radiobuttons sollen das gleiche Problem haben, was ich allerdings noch nicht ausprobiert habe.
Wenn der Kunde eine angeklickte Box sieht und es wird nicht checked übergeben, kann das kritisch werden! Vor allem wenn der Kunde den Fehler reproduzieren kann!
Also wenn ihr ein Template einsetzt, das FLAT-UI einsetzt, prüft das und fixt das Problem, bevor es Abmahnungen hagelt!
Wer wie ich den Code nur minified vorliegen hatte, dem wird hier geholfen:
http://unminify.com/