我试图找到&符号和下划线的键码.我不应该允许我的用户允许输入&符号和下划线.我看了一个列表,它提到55作为7&ersand的键码,另一个列表说55是7的键码.所以如果我的用户点击键码55时返回false,我禁止用户使用7,这不是要求.如何找到&符号和下划线的密钥代码?
我只是尝试了55,但它只是给了我警报7而不是&符号!
function noenter(e)
{
evt = e || window.event;
var keyPressed = evt.which || evt.keyCode;
if(keyPressed==13)
{
return false;
}
else if(evt.shiftKey && keyPressed===55)
// else if(keyPressed==59 || keyPressed==38 || keyPressed==58 || keyPressed==95)
{
alert("no special characters");
return false;
}
}
Run Code Online (Sandbox Code Playgroud) 事件keypress
13和10不工作在iPhone Safari,android firefox但使用Android默认浏览器.
我有一个jsp页面,其中有一个表单,该表单以数字作为输入,并通过将这些数字除以此输入来更改同一页面中其他div元素的值.
我正在使用keypress
jQuery的功能,并使用键码10和13进行测试.它适用于所有桌面浏览器,但GO按钮不会触发智能手机上的safari和firefox.请告诉我如何解决这个问题?
这是我使用的部分代码:
$('.number').keypress(function(e) {
if(e.keyCode == 10 || e.keyCode == 13 ) {
$('#1').html((textreplace/input).toFixed(0)+'g');
$('#2').html((textreplace2/input).toFixed(0)+'%');
$('#3').html((textreplace3/input).toFixed(0)+'g');
...
..
}
}
Run Code Online (Sandbox Code Playgroud)
".number"是输入表单中使用的类名称,其类型为"text".所以,基本上我根本不使用提交.
我有一个小的 WIN32 C 应用程序,我在其中使用该KBDLLHOOKSTRUCT
结构。此结构包含用于按下键的 VK 代码。
我尝试将其转换为 ASCII 字符。为此,我使用了 Function MapVirtualKey
,它运行良好。
唯一的问题是,一个 VK 代码可以保留多个字符。例子:
在我的键盘(瑞士-德语)上存在 key-char .。如果我按Shift+.然后它会创建一个:
. VK 代码是相同的。那没问题,我还可以检查是否Shift被按下或被Caps Lock激活。
我唯一的问题是:我怎样才能得到字符 ':'?我需要这样的功能:
GetKeyChar(vkCode, shift)
我需要这个来获得键盘的“正常”和“移位”值。当然,我可以对此进行硬编码,但我不喜欢以这种方式进行。
我正在开发一个与Windows本机程序通信的程序,因此它需要actucal原生虚拟键代码.如何从Windows本机虚拟密钥代码转换为Qt :: Key?
与C++/C相比,某些键(如shift,[,],Del等)的虚拟键代码在java中显示为不同的值.例如 :
Key Java C / C++
Shift 16 160
[ 91 219
] 93 221
\ 92 220
Del 127 46
Window 524 91
Run Code Online (Sandbox Code Playgroud)
这是什么原因?这些代码是虚拟代码还是不同类型?对于包括字母,数字,功能键(F1-F12),退格键,`等的键是相同的.
我可能误解了一个概念,在这种情况下请澄清一下.
签入C/C++
KBDLLHOOKSTRUCT * kbhook = (KBDLLHOOKSTRUCT *) lParam;
printf("%u\n",kbhook->vkCode);
Run Code Online (Sandbox Code Playgroud)
用Java检查
private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {
int code = evt.getKeyCode();
// code isEqualTo KeyEvent.VK_DELETE : NOTE
}
Run Code Online (Sandbox Code Playgroud)
参考:KeyEvent类
我一直在使用Javascript密钥事件(keyup,keydown,keypress)做一些工作,并得出结论,在尝试确定用户按下了哪些密钥时,每个都有其优点和缺点.
通过使用jQuery提供的event.which,似乎onkeypress将提供区分大小写的字符代码.即AZ为65-90,az为97-122.但是,方向等特殊键不会触发onkeypress.但它们会触发keyup/*keydown*,但这些不会提供区分大小写的代码.
是否存在"两全其美"的解决方案,既可以提供区分大小写检测,又可以提供特殊的密钥检测,而不需要手动同时监控多个事件?
我正在进行电话验证,并要求使用电话号码自动格式化输入,并且只允许添加数字字符.但是当我尝试使用keydown和keypress限制输入时,IPhone允许我输入#和*.当我检查keydown值时,它们分别与3和8相同(键码51和56).这在Android浏览器中完美运行但在iPhone中失败.
任何人都面临类似的问
$(formSelector + ' input[name^="phone"]').on('keydown keypress',function (e) {
// Allow: backspace, delete, tab, escape, and enter
if ( e.keyCode == 46 || e.keyCode == 8 || e.keyCode == 9 || e.keyCode == 27 || e.keyCode == 13 ||
// Allow: Ctrl+A
(e.keyCode == 65 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)
) {
// let it happen, don't do anything
return;
} else {
// Ensure that it …
Run Code Online (Sandbox Code Playgroud) 我按下Tab键时试图插入四个空格.我正在使用以下代码(请参阅参考资料spaces = "\t"
),但是当我将其切换到spaces = " "
按Tab键时只插入一个空格.我也试过""+""+""+"":
$(function () {
$('textarea').keydown(function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
var start = $(this).get(0).selectionStart;
var end = $(this).get(0).selectionEnd;
// set textarea value to: text before caret + tab + text after caret
spaces = "\t"
$(this).val($(this).val().substring(0, start)
+ spaces
+ $(this).val().substring(end));
// put caret at right position again
$(this).get(0).selectionStart =
$(this).get(0).selectionEnd = start + 1;
}
});
});
Run Code Online (Sandbox Code Playgroud)
注意:这是在基于浏览器的textarea/ide中插入空格.
我想允许输入如1:10,但不是1; 10.但是,:和; 两者都对应keyCode 186,所以使用keyCode来防止; 从输入到我的输入字段的键不起作用.我也研究过使用charCodes,但charCodes没有; 或:值.最后,我查看了ascii表.它们具有分号和冒号值.我有什么方法可以使用ascii表来防止; 输入到我的文本框中的键,但是:允许的键?或者是否有另一种方法可以让我这样做?我还想过连续检测两个键输入,这样我就可以检测到一个shift键输入,但这似乎是一个肮脏的解决方案.
$("input.form-1").bind({
keydown: function(e) {
if(e.which ===186) { //trying to disallow semicolons, which also disallows colons
return false;
}
}
});
Run Code Online (Sandbox Code Playgroud) 某些键盘"和弦"(同时按下键的组合)将无法在浏览器中正确注册(Chrome和Firefox测试).例如,使用下面的代码,试试这个:
1)按"e"键(将记录"键69")
2)在按住"e"的同时,按"]"(它将记录"键221")
3)在按住"e"和"]"的同时,按"i"(这不能记录!)
4)但是,如果您放开"i"并按"o",它将成功记录"键79".
document.onkeydown = function(event){
var key = event.keyCode;
console.log("key", key);
};
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释这里发生了什么,如果有任何解决方法?对于上下文,我正在开发一个基于QWERTY的音乐应用程序,我希望能够演奏我的所有和弦.
我知道这keyCode
是不赞成的,也许是这种行为的原因之一?
这个问题的正确方法是什么?