yvanui.yvcheck.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /**
  2. * yvan.yvcheck.js
  3. * @author luoyifan
  4. * 2019-07-14 11:14:00
  5. */
  6. 'use strict';
  7. (function ($) {
  8. function init(target) {
  9. var state = $.data(target, 'yvcheck');
  10. var option = state.options;
  11. var $dom = $(target);
  12. $dom.on('click.checkbox keydown', function (event) {
  13. if (event.type === "keydown") {
  14. if (event.keyCode !== 32) {
  15. return;
  16. }
  17. }
  18. if (state.checked) {
  19. $dom.yvcheck('uncheck');
  20. if ($.type(option.onChange) === 'function') {
  21. option.onChange.call(this, option.off, event);
  22. }
  23. } else {
  24. $dom.yvcheck('check');
  25. if ($.type(option.onChange) === 'function') {
  26. option.onChange.call(this, option.on, event);
  27. }
  28. }
  29. });
  30. }
  31. $.fn.yvcheck = function (options, param) {
  32. if (typeof options == 'string') {
  33. var method = $.fn.yvcheck.methods[options];
  34. if (method) {
  35. var args = [this];
  36. for (var i = 1; i < arguments.length; i++) {
  37. args.push(arguments[i]);
  38. }
  39. return method.apply(this, args);
  40. } else {
  41. console.error('not found method:' + options);
  42. }
  43. }
  44. options = options || {};
  45. return this.each(function () {
  46. var state = $.data(this, 'yvcheck');
  47. if (state) {
  48. $.extend(state.options, options);
  49. } else {
  50. $.data(this, 'yvcheck', {
  51. options: $.extend({}, $.fn.yvcheck.defaults, options)
  52. });
  53. }
  54. init(this);
  55. });
  56. };
  57. $.fn.yvcheck.methods = {
  58. checked: function (jq) {
  59. var state = $.data(jq[0], 'yvcheck');
  60. return state.checked;
  61. },
  62. check: function (jq) {
  63. jq.each(function () {
  64. var state = $.data(this, 'yvcheck');
  65. state.checked = true;
  66. $(this).find('.yvan-checkbox').addClass('yvan-checked');
  67. });
  68. },
  69. uncheck: function (jq) {
  70. jq.each(function () {
  71. var state = $.data(this, 'yvcheck');
  72. state.checked = false;
  73. $(this).find('.yvan-checkbox').removeClass('yvan-checked');
  74. });
  75. },
  76. getValue: function (jq) {
  77. var state = $.data(jq[0], 'yvcheck');
  78. var option = state.options;
  79. if (jq.yvcheck('checked')) {
  80. if ($.type(option.on) === 'undefined') {
  81. return true;
  82. }
  83. return option.on;
  84. } else {
  85. if ($.type(option.off) === 'undefined') {
  86. return false;
  87. }
  88. return option.off;
  89. }
  90. },
  91. setValue: function (jq, value) {
  92. jq.each(function () {
  93. var state = $.data(this, 'yvcheck');
  94. var option = state.options;
  95. if (value === true || value === option.on) {
  96. jq.yvcheck('check');
  97. } else {
  98. jq.yvcheck('uncheck');
  99. }
  100. });
  101. },
  102. };
  103. $.fn.power.defaults.xtype.yvcheck = function ($targetDOM, option) {
  104. var $dom = $('<div tabindex="0" xtype="yvcheck" style="margin-top: 4px;text-align: center;">' +
  105. '<div class="yvan-checkbox" style="padding-left:0" lay-skin="primary">' +
  106. '<i class="fa fa-check"></i>' +
  107. '</div>' +
  108. '</div>').appendTo($targetDOM);
  109. return $dom.yvcheck(option);
  110. };
  111. $.fn.yvcheck.defaults = {
  112. on: 'TRUE',
  113. off: 'FALSE'
  114. };
  115. })(jQuery);