【发布时间】:2015-10-26 15:01:23
【问题描述】:
找到了这个 Caps Lock 检测解决方案。在这里提琴:https://jsfiddle.net/07ugkacn/11/(谢谢 Armfoot)。 JS/jQuery 代码在这里:
$(function () {
var isShiftPressed = false;
var isCapsOn = null;
$("#txtName").bind("keydown", function (e) {
var keyCode = e.keyCode ? e.keyCode : e.which;
if (keyCode == 16) {
isShiftPressed = true;
}
});
$("#txtName").bind("keyup", function (e) {
var keyCode = e.keyCode ? e.keyCode : e.which;
if (keyCode == 16) {
isShiftPressed = false;
}
if (keyCode == 20) {
if (isCapsOn == true) {
isCapsOn = false;
$("#error").hide();
} else if (isCapsOn == false) {
isCapsOn = true;
$("#error").show();
}
}
});
$("#txtName").bind("keypress", function (e) {
var keyCode = e.keyCode ? e.keyCode : e.which;
if (keyCode >= 65 && keyCode <= 90 && !isShiftPressed) {
isCapsOn = true;
$("#error").show();
} else {
$("#error").hide();
}
});
});
非常适合我的需求。我正在尝试用 JavaScript 重写它,没有 jQuery。如何在没有 jQuery 的情况下重写绑定方法?我尝试将输入字段存储在变量中并写入
passwordInput.onkeyup = function(e) { ... }
...例如。但无济于事。认为这是阻止此解决方案工作的原因。
请帮忙。
【问题讨论】:
-
为什么不检查两个接一个写的字母是否大写?另外,当你不喜欢这个解决方案时,找出哪个键码 capslock 并检查它是否打开
-
这不是最优的。用户需要知道大写锁定是在点击输入时打开的,而不是在他们开始输入之后。问题是在用户关闭大写锁定后会显示大写锁定消息,并且仅在用户输入至少一个字符后才会隐藏。这远非理想。我控制 C'eed 和 V'eed 的解决方案非常适合我的需求。我只需要在没有 JQuery 的纯 JavaScript 中使用它。
-
我的同事不希望我在项目中使用 jQuery 来最小化在此特定页面加载时加载的脚本。所以,是的,这就是我想要的。要翻译这个。很多对我来说似乎相当明显,如果没有 jQuery 将如何重写。我认为问题在于绑定函数。如果您能告诉我如何重新编写上述绑定函数,您将赢得今天的互联网。
-
脚本也只检查写的第一个字母是否是大写并按下 shift .. 如果不是 CAPS 开启 ;) 你可以将它与我上面提到的其他 2 个条件结合起来,你可以这样做你自己的
-
如果您显示您尝试过的代码,它会更容易为您提供帮助。为 onkeypress 分配一个函数是这样做的方法,所以如果你想知道为什么它不适合你,你必须展示更多的代码。
标签: javascript jquery rewrite