更新:
我终于弄清楚,“keypress”在Linux平台上比“keydown”或“keyup”有更好的兼容性。我刚刚把“keyup”/“keydown”改为“keypress”,所以一切顺利。
我不知道是什么原因,但它是我的解决方案。感谢所有响应我问题的人。
–
我有一些代码需要检测按键事件(我必须知道用户何时按Enter键)与JQuery,这里是Javascript中的代码:
- j.input.bind("keyup",function (l) {
- if (document.selection) {
- g._ieCacheSelection = document.selection.createRange()
- }
- }).bind("keydown",function(l) {
- //console.log(l.keyCode);
- if (l.keyCode == 13) {
- if(l.ctrlKey) {
- g.insertCursorPos("\n");
- return true;
- } else {
- var k = d(this),n = k.val();
- if(k.attr('intervalTime')) {
- //alert('can not send');
- k.css('color','red').val('Dont send too many messages').attr('disabled','disabled').css('color','red');
- setTimeout(function(){k.css('color','').val(n).attr('disabled','').focus()},1000);
- return
- }
- if(g_debug_num[parseInt(h.buddyInfo.id)]==undefined) {
- g_debug_num[parseInt(h.buddyInfo.id)]=1;
- }
- if (d.trim(n)) {
- var m = {
- to: h.buddyInfo.id,from: h.myInfo.id,//stype: "msg",body: (g_debug_num[parseInt(h.buddyInfo.id)]++)+" : "+n,timestamp: (new Date()).getTime()
- };
- //g.addHistory(m);
- k.val("");
- g.trigger("sendMessage",m);
- l.preventDefault();
- g.sendStatuses("");
- k.attr('intervalTime',100);
- setTimeout(function(){k.removeAttr('intervalTime')},1000);
- return
- }
- return
- }
- }
它在Windows上工作正常,但在Linux上,它无法捕获Enter事件。有人可以帮忙吗?
更新:
如果我只用英语来说话似乎很好但是我必须使用一些输入法来输入中文。如果是问题? (如果我使用中文输入法,JQuery不能检测到)?
解决方法
尝试这个
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head id="Head1" >
- <title></title>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
- </head>
- <body>
- <div>
- <input id="TestTextBox" type="text" />
- </div>
- </body>
- <script type="text/javascript">
- $(function()
- {
- var testTextBox = $('#TestTextBox');
- var code =null;
- testTextBox.keypress(function(e)
- {
- code= (e.keyCode ? e.keyCode : e.which);
- if (code == 13) alert('Enter key was pressed.');
- e.preventDefault();
- });
- });
- </script>
- </html>