看看我的jsfiddle 演示,如果e.which == 1
那样当你左键单击h2它会
e.which == 2
或e.which == 3
然后它不会工作.2是鼠标中键,3是鼠标右键.我也发现了这个:
JQuery提供了一个e.which属性,分别为左,中,右三次返回1,2,3.所以你也可以使用if(e.which == 3){alert("right click"); }
此代码无效:
码:
$("h2").live('click', function(e) {
if( e.which == 2 ) {
e.preventDefault();
alert("middle button");
}
});
Run Code Online (Sandbox Code Playgroud) 我的条码扫描器的字符代码问题用于将字符输入到Web界面.
如果条形码具有诸如 - (短划线/连字符/减号)之类的符号,则它给出了在许多字符集中正确的字符代码189.实际上,如果我在扫描时选择了文本输入,它将按预期输入 - 字符.但是,如果我从全局文档拦截keypress或keyup事件并使用fromCharCode()函数自己构建字符串,而不是让浏览器处理它,我得到½字符,这当然是189的unicode转换码.
在事件本身中,keyCode和"which"显示为189,而keyIdentifier为"U + 00BD".不幸的是,我真正需要的charCode值始终为0.
当然,我现在可以在大约5秒内手动处理这种转换.问题是我不知道我可能从扫描仪获得的完整代码集,我担心未来几周或几个月会出现未处理的角色,并会让人头疼.或者,我可以将原始字符代码上传到服务器并尝试在PHP中处理它.我更喜欢在客户端上处理它,但是出于时间和响应的原因.将假按键发送到不可见的文本输入可能也会起作用,但这是一个非常糟糕的解决方法.
似乎应该有更好的方法来做到这一点,我必须遗漏一些明显的东西.有没有人有任何想法?
这让我疯了.这是一个难以解释的但我会有所作为.
我的网站首页上有一个输入文本字段.我编写了一个keydown事件观察器,它检查keyCode,如果它的ENTER(或等效),它将检查输入值(电子邮件).如果电子邮件在数据库中有效且唯一,则会提交表单.基本的东西,或者你会想到的.
如果我在字段中输入我的电子邮件地址并按Enter键,它在所有浏览器中都能正常工作.但是,如果我键入前几个字母,然后使用箭头键从历史记录下拉框中选择电子邮件(希望你知道我在这里的意思),然后按回车键结果不同.表单字段的值被捕获为我键入的几个字母,因此验证失败.似乎当我按下回车键从历史记录下拉列表中"选择"电子邮件时,浏览器正在打断,就好像我正在打字一样.
在Chrome和Safari中它可以正常工作.因为它应该意味着当您按Enter键从历史记录下拉列表中"选择"电子邮件时,它所做的就是将该电子邮件地址放入文本框中.只有在第二个ENTER键按下它然后触发事件观察者,并验证电子邮件.
希望有人可以解释为什么会发生这种情况......我的直觉是它是一个浏览器的东西,将是我无法解决的问题.
谢谢李
编辑:为了添加我的问题的澄清,让我添加我使用"keydown"事件来捕获按下回车键的时刻.我尝试了"keyup"事件,这解决了我上面的问题,但后来我似乎无法停止提交表单."keyup"事件在默认行为之后触发,因此它不是正确的选择.
进一步编辑:
再次感谢你,顺便说一句,你的英语非常好(回应你对英语不好的评论).
我已经改变了我的事件处理程序:
$("emailInputBox").observe("keydown", function(event) {
return submitViaEnter(event, submitSignupFormOne);
});
Run Code Online (Sandbox Code Playgroud)
对此:
$("emailInputBox").observe("keydown", function(event) {
setTimeout(submitViaEnter.curry(event, submitSignupFormOne),0);
});
Run Code Online (Sandbox Code Playgroud)
submitViaEnter
:
function submitViaEnter(event, callback) {
var code = event.keyCode;
if (code == Event.KEY_RETURN) {
event.stop();
return callback(event);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
似乎工作但现在的问题是允许浏览器在运行submitViaEnter
函数之前执行默认操作,这意味着当我按Enter时正在提交表单.
我试图允许用户只输入数字并将控件复制并粘贴到文本框中.我能够限制用户只输入数字,但复制,粘贴不起作用,帮我解决这个问题.
这是我的脚本:
$(".allow_only_numbers").keydown(function (e) {
var ctrlDown = false;
var ctrlKey = 17, vKey = 86, cKey = 67;
if (e.keyCode === ctrlKey){
ctrlDown = true;
}
// Allow: backspace, delete, tab, escape, enter and .
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110]) !== -1 ||
// Allow: Ctrl
(e.keyCode === ctrlKey) ||
// Allow: Ctrl+A
(e.keyCode === 65 && e.ctrlKey === true) ||
// Allow: Ctrl+v
(e.keyCode === vKey && ctrlDown) ||
// Allow: Ctrl+c
(e.keyCode === cKey …
Run Code Online (Sandbox Code Playgroud) 我有这个JavaScript函数,用于强制用户只在文本框中键入数字.现在,我想修改此功能,以便用户输入加号(+)符号.怎么做到这一点?
//To only enable digit in the user input
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud) FireFox的jQuery keypress事件keyCode
在String.fromCharCode(e.keyCode)
转换后为事件对象提供加密属性,但在Chrome中运行良好.
以下是javascript代码:
<!-- #booter and #text are ids of html element textarea -->
<script type="text/javascript">
$(function(){
$('#booter').keypress(function(e){
var input = $(this).val() + String.fromCharCode(e.keyCode);
$('#text').focus().val(input);
return false;
});
});
</script>
Run Code Online (Sandbox Code Playgroud) 我对这个问题KeyEventArgs
的KeyCode
和KeyData
和KeyValue
.
KeyCode
并且Keydata
是键类型,但我不知道它们之间有什么区别.因为KeyValue
,我不知道它是什么 - 它有一个int
类型,它是否返回char
按下的键的值?
我对Key事件没有多少经验; 任何关于它们如何运作以及如何使用它们的解释将不胜感激.
我正在浏览器中建立一个终端窗口(就像ajaxterm一样)并且不知道要发送到ssh隧道的哪个转义序列(打开通过paramiko.SSHClient().invoke_shell(term='linux')
).
我找到了一个关键记录器并在$ TERM =='linux'的终端中尝试了它,但它返回了相同的序列ctrl+left
和left
(27,91,68).
如果我在另一个终端尝试键盘记录器(使用$ TERM =='xterm'),我会得到代码(27,91,49,59,53,68).但是这些代码不会移动从SSH通道生成预期的输出(这将在正常的Linux shell上移动光标一个字).即使我用term ='xterm'开始paramiko也是如此.
知道我应该使用什么序列?或者为什么上面的序列不起作用?
更新:我很乐意使用另一种终端类型(不是"linux"),但遗憾的是pyte仅适用于VTxxx终端(我相信"linux"是类似vt220的终端 - 无论如何,它都有效),所以xterm不起作用正常.
我试图用以下代码从数字键盘解析keydown事件:
$('#myDiv').keydown(function(e) {
val = String.fromCharCode(e.which)
});
Run Code Online (Sandbox Code Playgroud)
问题是键盘0-9
返回keyCodes 96-105
,根据fromCharCode()
小写字母a-i
.如何将numberpad的keydown事件解析为适当的数字?
我正在使用德语键盘(如下所示)并尝试使用Java中的Robot类.我正在尝试找到我按下的键的KeyCodes.它适用于getKeyCode()
.例如:'A'是代码:65,' - '是代码:45,'ENTER'是代码:10
但是当我按下'?ß\'键(在上面1-0键的德语键盘上)
getKeyCode()
说代码:0,我也没有VK_KEY
在纪录片中找到任何内容.
有没有办法按下那把钥匙?