javascript中的布尔标志没有正确检查
boolean flag in javascript is not checking properly
我创建了一个示例应用程序,当我按下键或鼠标时检查,但问题是当鼠标或当键被按下时,它打印控制台"按下Enter"和"未按下某些鼠标事件被单击",布尔检查不能正常工作,我认为是这样,
谁能告诉我一些解决办法
$('#adminPanel').bind("searchMaster", function(event, data)
{
var press = true;
$(this).keypress(function(e) {
var code = e.keyCode ? e.keyCode : e.which;
if (code == 13)
{
console.log("Enter is pressed");
press = false;
}
});
if(press)
{
console.log("Enter is not pressed, some Mouse event is clicked");
// some other action to be triggered if key is not pressed
}
});
问题是,(a)你在点击回调中注册按键事件,(b)你将press
设置为false
,如果按下,(c)你每次点击鼠标时都不会重置press
的值。
我建议您将两个回调拆分,并将press
移出回调。以press
=> enterPressed
为例。enterPressed
和回调函数被封装在一个IIFE中,以避免污染全局命名空间。
(function () {
// by default, "enter" is not pressed
var enterPressed = false;
// Suppose this event is triggered by mouse clicks
$("#adminPanel").bind("searchMaster", function (event, data) {
if (!enterPressed) {
// Handle Mouse Click (no "enter" pressed here)
}
});
// This callback will be triggered if you press a key
// and if you release a key
$("#adminPanel").on("keydown keyup", function (e) {
var code = e.keyCode ? e.keyCode : e.which;
// check if the pressed/released key was "enter"
if (code === 13) {
enterPressed = !enterPressed;
}
});
})();
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- 如何让程序检查所选单词中是否有按键
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 如何在标志中检查权限
- Javascript正则表达式检查标志支持
- Chrome 打包应用:检查是否启用了“实验性扩展程序 API”标志
- 检查哪些标志是整数的开/关
- 如何检查脏标志
- 位掩码(javascript):如何检查所有标志
- JavaScript: Enum标志检查
- javascript中的布尔标志没有正确检查
- ajax和php标志脚本-设置和检查cookie并使用DB