在微型 mce 插件上显示日期时间选择器
Display Datetime picker on tiny mce plugin
我正在使用 j-query tinyMce 插件作为编辑器。一切都很顺利。但现在我需要添加一个自定义按钮,以便我可以从日期选择器中插入日期。我所做的是
在工具栏中添加了一个按钮。及其在编辑器外部的文本区域中显示日期的工作。但我想在该按钮下方显示日期选择器。这是我当前的代码。
setup: function(editor) {
editor.addButton('datepicker', {
type: 'button',
class: 'MyCoolBtn',
text: 'Datepicker',
tooltip: 'Pick a date',
onClick: function() {
$('#datepicker').datepicker('show')
},
icon: true,
});
}
这里有截图,方便理解
这是一个有效的 fiddle:http://jsfiddle.net/10yz8q55/
我们将日期选择器弹出窗口从输入字段重新定位到任何其他元素:
$('.datepicker').datepicker({
beforeShow: function (input, inst) {
setTimeout(function () {
var button = $('#button-tinymce-datepicker'); //the element where the popup should be
var offset = button.offset();
inst.dpDiv.css({
top: offset.top,
left: offset.left
});
}, 0);
}
});
一个不幸的 hack 是在您的菜单中添加一个隐藏的 <input>
。这将允许您将 datepicker
绑定到使其显示 near/under 的输入。
这是一个解决方案:
$(document).ready(function() {
tinymce.init({
selector: "textarea",
toolbar: "insertfile undo redo | styleselect | bold italic | datepicker",
setup: function(editor) {
editor.addButton('datepicker', {
type: 'button',
classes: 'MyCoolBtn',
text: 'Datepicker',
tooltip: 'Pick a date',
onClick: function() {
$('#datepicker').datepicker('show');
},
//icon: true,
});
}
});
$("#datepicker").datepicker({
onSelect: function(dateText, inst) {
// insert into editor
tinymce.activeEditor.execCommand('mceInsertContent', false, dateText);
},
beforeShow: function(input, inst) {
// change position
// see
var $dpBtn = $(".mce-MyCoolBtn");
var buttonPos = $dpBtn.position();
inst.dpDiv.css({
// cannot use top: and left: attrs here since they are hard-set inline anyway
marginTop: buttonPos.top + $dpBtn.height() + 'px',
marginLeft: buttonPos.left + 'px'
});
}
});
});
#datepicker {
display: none;
}
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//tinymce.cachefly.net/4.0/tinymce.min.js"></script>
<input type="text" id="datepicker"></input>
<textarea rows="10" cols="40" id="editor"></textarea>
注意日期选择器选项 beforeShow
和 onSelect
的用法并查看评论。
以防万一JSFiddle
我正在使用 j-query tinyMce 插件作为编辑器。一切都很顺利。但现在我需要添加一个自定义按钮,以便我可以从日期选择器中插入日期。我所做的是
在工具栏中添加了一个按钮。及其在编辑器外部的文本区域中显示日期的工作。但我想在该按钮下方显示日期选择器。这是我当前的代码。
setup: function(editor) {
editor.addButton('datepicker', {
type: 'button',
class: 'MyCoolBtn',
text: 'Datepicker',
tooltip: 'Pick a date',
onClick: function() {
$('#datepicker').datepicker('show')
},
icon: true,
});
}
这里有截图,方便理解
这是一个有效的 fiddle:http://jsfiddle.net/10yz8q55/ 我们将日期选择器弹出窗口从输入字段重新定位到任何其他元素:
$('.datepicker').datepicker({
beforeShow: function (input, inst) {
setTimeout(function () {
var button = $('#button-tinymce-datepicker'); //the element where the popup should be
var offset = button.offset();
inst.dpDiv.css({
top: offset.top,
left: offset.left
});
}, 0);
}
});
一个不幸的 hack 是在您的菜单中添加一个隐藏的 <input>
。这将允许您将 datepicker
绑定到使其显示 near/under 的输入。
这是一个解决方案:
$(document).ready(function() {
tinymce.init({
selector: "textarea",
toolbar: "insertfile undo redo | styleselect | bold italic | datepicker",
setup: function(editor) {
editor.addButton('datepicker', {
type: 'button',
classes: 'MyCoolBtn',
text: 'Datepicker',
tooltip: 'Pick a date',
onClick: function() {
$('#datepicker').datepicker('show');
},
//icon: true,
});
}
});
$("#datepicker").datepicker({
onSelect: function(dateText, inst) {
// insert into editor
tinymce.activeEditor.execCommand('mceInsertContent', false, dateText);
},
beforeShow: function(input, inst) {
// change position
// see
var $dpBtn = $(".mce-MyCoolBtn");
var buttonPos = $dpBtn.position();
inst.dpDiv.css({
// cannot use top: and left: attrs here since they are hard-set inline anyway
marginTop: buttonPos.top + $dpBtn.height() + 'px',
marginLeft: buttonPos.left + 'px'
});
}
});
});
#datepicker {
display: none;
}
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//tinymce.cachefly.net/4.0/tinymce.min.js"></script>
<input type="text" id="datepicker"></input>
<textarea rows="10" cols="40" id="editor"></textarea>
注意日期选择器选项 beforeShow
和 onSelect
的用法并查看评论。
以防万一JSFiddle