1

我在移动项目中使用 CodeMirror(使用 PhoneGap),当按下“>”键时,将启动特定的 CodeMirror 功能。

在我的应用程序中,我有一个快速按钮,允许用户插入“>”,而无需在他们的软键盘上找到它。问题是 CodeMirror 检测到击键而不是字符代码> .

因此,当用户按下按钮时 - 代码不会启动,因为它从未检测到击键。

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>

有谁知道我如何欺骗应用程序认为按键被按下而不仅仅是插入字符代码?

4

1 回答 1

2

编辑: Tim Down 是对的,我似乎忽略了键码的字符码。该>字符有一个charCodeof 62,这也是 jQuery 事件对象的 、 和 属性中发送whichkeyCode内容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事件,以便您的代码的其余部分可以相应地执行。

于 2013-09-18T14:47:27.143 回答