我正在尝试以下代码。应该在按下键sh
时将输入的属性更改为1 shift
,并在释放时恢复为0
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$(document).on("keyup","body",function(e) {
if (e.which == 16) {
$("input").attr("sh","0");
}
});
$(document).on("keydown","body",function(e) {
if (e.which == 16) {
$("input").attr("sh","1");
}
});
});
</script>
</head>
<body>
<input type = 'text' sh = '0'/>
<p>Just checking</p>
</body>
</html>
它工作正常,除非执行此事件序列。在输入未聚焦时按 shift 键。(Firebug 显示sh
为 1,正如预期的那样)。现在仍然按下键,专注于输入。现在右键单击输入。弹出上下文菜单。现在,如果您释放该shift
键(让上下文菜单保留),Firebug 显示它sh
仍然是 1。您在上下文菜单外部单击以使其运行,或者甚至单击将paste
剪贴板文本粘贴到输入中的选项,仍然sh
保持 1。如果您再次按下并释放shift
,才再次sh
变为0。
知道如何解决这个问题吗?