2013-09-18 3 views
1

Я использую CodeMirror в мобильном проекте (с использованием PhoneGap), и специальная функция CodeMirror будет запускаться при нажатии клавиши «>».Javascript CHAR insert replic keystroke

В моем приложении у меня есть кнопка быстрого доступа, которая позволяет пользователю вставлять «>» без необходимости находить ее на своей программной клавиатуре. Проблема в том, что CodeMirror обнаруживает нажатие клавиши, а не код символа & # 62;.

Поэтому, когда пользователь нажимает кнопку - код не инициируется, потому что он никогда не обнаружил нажатия клавиши.

JQuery:

$('.html-inp').click(function() { 
    var txt = $(this).text().toString(); 
    editor.replaceSelection(txt, focus); 
    editor.focus(); 
}); 

HTML:

<a href='#' data-role='button' id='a1' class='html-inp'>&#62;</a> 

Кто-нибудь знает, как я могу обмануть приложение думать, ключ был нажат, а не просто вставить код символа?

ответ

2

Edit: Тим прав, я, кажется, забыл код символов в свете ключевого кода. Символ > имеет charCode62, что также передается в объекте события jQuery which, keyCode и charCode. Я сделал соответствующие изменения ниже:

Попробуйте следующий HTML:

<a href='#' data-role='button' id='a1' class='html-inp' data-char='62'></a> 

И следующий JQuery:

$('.html-inp').click(function() { 
    var e = jQuery.Event('keypress'), 
     char = $(this).data('char'); 
    e.shiftKey = true; 
    e.which = char; 
    e.charCode = char; 
    e.keyCode = char; 
    editor.replaceSelection(String.fromCharCode(char), focus); 
    editor.trigger(e); 
}); 

Это должно иметь эффект вставки скобки в редактор, и также инициируя событие keypress в редакторе, чтобы остальная часть вашего кода могла действовать соответствующим образом.

+1

Если нажатие клавиши создает символ, у нее есть код символа, связанный с ним, поэтому ваше первое предложение кажется неправильным, если только я не понимаю вашу точку зрения. –

+0

Вы абсолютно правы! Я сделал немного больше исследований и внес изменения. Спасибо что подметил это. – theftprevention

+0

Это в правильном направлении, но я считаю, что последняя строка нуждается в небольшой переделке. Я не могу заменитьSelection (char .... потому что char в этом случае равен 62. Я попробовал replaceSelection (String.fromCharCode (char) ... который вставил «>», но не вызывал функцию codemirror. – Sanya