123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- /**
- * yvan.yvcheck.js
- * @author luoyifan
- * 2019-07-14 11:14:00
- */
- 'use strict';
- (function ($) {
- function init(target) {
- var state = $.data(target, 'yvcheck');
- var option = state.options;
- var $dom = $(target);
- $dom.on('click.checkbox keydown', function (event) {
- if (event.type === "keydown") {
- if (event.keyCode !== 32) {
- return;
- }
- }
- if (state.checked) {
- $dom.yvcheck('uncheck');
- if ($.type(option.onChange) === 'function') {
- option.onChange.call(this, option.off, event);
- }
- } else {
- $dom.yvcheck('check');
- if ($.type(option.onChange) === 'function') {
- option.onChange.call(this, option.on, event);
- }
- }
- });
- }
- $.fn.yvcheck = function (options, param) {
- if (typeof options == 'string') {
- var method = $.fn.yvcheck.methods[options];
- if (method) {
- var args = [this];
- for (var i = 1; i < arguments.length; i++) {
- args.push(arguments[i]);
- }
- return method.apply(this, args);
- } else {
- console.error('not found method:' + options);
- }
- }
- options = options || {};
- return this.each(function () {
- var state = $.data(this, 'yvcheck');
- if (state) {
- $.extend(state.options, options);
- } else {
- $.data(this, 'yvcheck', {
- options: $.extend({}, $.fn.yvcheck.defaults, options)
- });
- }
- init(this);
- });
- };
- $.fn.yvcheck.methods = {
- checked: function (jq) {
- var state = $.data(jq[0], 'yvcheck');
- return state.checked;
- },
- check: function (jq) {
- jq.each(function () {
- var state = $.data(this, 'yvcheck');
- state.checked = true;
- $(this).find('.yvan-checkbox').addClass('yvan-checked');
- });
- },
- uncheck: function (jq) {
- jq.each(function () {
- var state = $.data(this, 'yvcheck');
- state.checked = false;
- $(this).find('.yvan-checkbox').removeClass('yvan-checked');
- });
- },
- getValue: function (jq) {
- var state = $.data(jq[0], 'yvcheck');
- var option = state.options;
- if (jq.yvcheck('checked')) {
- if ($.type(option.on) === 'undefined') {
- return true;
- }
- return option.on;
- } else {
- if ($.type(option.off) === 'undefined') {
- return false;
- }
- return option.off;
- }
- },
- setValue: function (jq, value) {
- jq.each(function () {
- var state = $.data(this, 'yvcheck');
- var option = state.options;
- if (value === true || value === option.on) {
- jq.yvcheck('check');
- } else {
- jq.yvcheck('uncheck');
- }
- });
- },
- };
- $.fn.power.defaults.xtype.yvcheck = function ($targetDOM, option) {
- var $dom = $('<div tabindex="0" xtype="yvcheck" style="margin-top: 4px;text-align: center;">' +
- '<div class="yvan-checkbox" style="padding-left:0" lay-skin="primary">' +
- '<i class="fa fa-check"></i>' +
- '</div>' +
- '</div>').appendTo($targetDOM);
- return $dom.yvcheck(option);
- };
- $.fn.yvcheck.defaults = {
- on: 'TRUE',
- off: 'FALSE'
- };
- })(jQuery);
|