我在移动项目中使用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'>></a>
有谁知道我怎么能欺骗应用程序认为按键被按下而不只是插入字符代码?
答案 0 :(得分:2)
编辑:Tim Down是对的,我似乎根据密钥代码忽略了字符代码。 >
字符的charCode
为62
,这也是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
事件,以便其余代码可以相应地执行操作。