zui
Version:
一个基于 Bootstrap 深度定制开源前端实践方案,帮助你快速构建现代跨屏应用。
72 lines (62 loc) • 2.5 kB
JavaScript
/* ========================================================================
* ZUI: Kindeditor plugin - zui
* http://openzui.com
* ========================================================================
* Copyright (c) 2019-2020 cnezsoft.com; Licensed MIT
* ======================================================================== */
$.each(['afterBlur', 'afterFocus', 'afterChange', 'afterTab'], function(_index, name) {
KindEditor.EditorClass.prototype[name] = function(fn) {
return this.handler(name, fn);
};
});
KindEditor.plugin('zui', function(K) {
var self = this;
var options = self.options;
self.uuid = $.zui.uuid();
self.afterBlur(function() {
if (options.syncAfterBlur) {
self.sync();
}
self.container.removeClass('focus');
});
self.afterFocus(function() {
self.container.addClass('focus');
});
self.afterChange(function() {
self.edit.srcElement.change().hide();
});
self.afterCreate(function() {
$(self.edit.srcElement[0]).data('keditor', self);
var spellcheck = options.spellcheck;
if (spellcheck !== undefined) {
self.edit.doc.documentElement.setAttribute('spellcheck', spellcheck);
}
var transferEvents = options.transferEvents;
if (transferEvents !== false) {
$(self.edit.doc).on(typeof transferEvents === 'string' ? transferEvents : 'click mousedown', function(event) {
$(self.edit.srcElement[0]).trigger(event.type);
});
}
});
if (options.transferTab !== false) {
var nextFormControl = 'input:not([type="hidden"]), textarea:not(.ke-edit-textarea), button[type="submit"], select';
self.afterTab(function() {
var $editor = $(self.edit.srcElement[0]);
var $next = $editor.next(nextFormControl);
if(!$next.length) $next = $editor.next().next(nextFormControl);
if(!$next.length) $next = $editor.parent().next().find(nextFormControl);
if(!$next.length) $next = $editor.parent().parent().next().find(nextFormControl);
$next = $next.first();
if ($next.length) {
var keditor = $next.data('keditor');
if(keditor) {
keditor.focus();
} else {
$next.focus();
}
return true;
}
return true;
});
}
});