我有(2)textareas。一个是常规文本区域,另一个是(F)CKEditor的参考。当用户键入(F)CKEditor时,我希望每个按键被触发并显示在常规文本区域中。我该怎么做?
这是我的非工作代码:
CKEDITOR.instances.ckeditor1.on('key', function (e)
{
var je = $.Event("keyup");
je.which = e.data.keyCode;
textArea.bind(je, private.bindKeyup);
textArea.trigger(je);
});
答案 0 :(得分:1)
我可以看到为什么你的例子不起作用的几个原因。
您可能还想从事件处理程序中删除textarea.bind()调用。将它放在那里意味着每次在ckeditor中按下一个键时,你都会将事件处理程序的另一个副本绑定到textarea。可能不是你想要的。
无论如何,这是我的样本
function onEditorKeyEvent(event) {
var rawKey = event.data.keyCode & ~(CKEDITOR.SHIFT | CKEDITOR.CTRL | CKEDITOR.ALT);
var eventData =
{
altKey: !!(event.data.keyCode & CKEDITOR.ALT),
ctrlKey: !!(event.data.keyCode & CKEDITOR.CTRL),
shiftKey: !!(event.data.keyCode & CKEDITOR.SHIFT),
keyCode: rawKey,
which: rawKey
};
var myTextbox = $('#myTextBox');
triggerKeyEvents(eventData, myTextbox);
}
function triggerKeyEvents(eventData, elementToTriggerOn)
{
// these key events can generate an extra keyUp event for some reason if they are done in the same thread.
//so we just do them on a different thread :-)
setTimeout(this.callback(function () {
var keydownEvent = jQuery.Event('keydown', eventData);
elementToTriggerOn.trigger(keydownEvent);
if (!keydownEvent.isDefaultPrevented()) {
elementToTriggerOn.trigger(jQuery.Event('keypress', eventData));
}
elementToTriggerOn.trigger(jQuery.Event('keyup', eventData));
}), 1);
}
答案 1 :(得分:0)
我有一个javascript代码来验证 Enter 按键
希望它可以帮到你
function enterKeyValidate(e)
{
var key;
if(window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
if(key==13)
{
alert('dont press Enter you @@@$$$#####')
return false
}
}