Как вызвать нажатие клавиши - PullRequest
0 голосов
/ 02 мая 2011

У меня есть (2) текстовые. один - обычный текстовый объект, другой - ссылка на (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);
        });

Ответы [ 2 ]

1 голос
/ 02 декабря 2011

Я вижу несколько причин, почему ваш пример не работает.

  • Я почти уверен, что ключ добавляется в текстовую область во время события нажатия клавиши. Это может быть ключом вниз. Но это определенно не событие keyup.
  • keyCode, который идет с событием ckeditor, не может быть передан прямо в текстовую область. в нем есть информация о том, нажаты ли клавиши alt, ctrl и shift. Вы должны будете раздеть их сначала. (см. мой пример ниже, где я создаю переменную rawKey)

Возможно, вы также захотите удалить вызов textarea.bind () из обработчика событий. Помещение этого означает, что вы будете привязывать другую копию обработчика событий к текстовой области при каждом нажатии клавиши в кейдиторе. вероятно, не то, что вы хотите.

В любом случае, вот мой образец

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);
}
0 голосов
/ 02 мая 2011

У меня есть код JavaScript для проверки Введите Нажмите клавишу

Надеюсь, это поможет вам

 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
}



}
...