有没有办法检测JavaScript当前是否存在关键字?
我知道"keydown"事件,但这不是我需要的.按键后一段时间,我希望能够检测到它是否仍然按下.
PS最大的问题似乎是,在一段时间后,密钥开始重复,启动keydown和keyup事件,如恶魔.希望只有一个简单的isKeyDown(key)函数,但如果没有,则需要克服/解决这个问题.
我有一个用户在网站上互动的框网格.如果他们点击一个框,它会改变颜色.有很多盒子,我希望它不那么乏味,所以有这样的功能将是很好的:如果鼠标按钮关闭而你悬停盒子,它会改变状态.有什么想法吗?
我在IE 8-10中发现了一个令人恼火的错误,它会阻止父母的活动状态被触发.看来,如果父元素的子元素是click事件的目标,则不会触发父元素上的活动状态.
这是一个有效的例子.如果单击<li>元素内的文本,则不会更改颜色.如果单击子项<li>以外的任何位置<p>,元素将变为蓝色.
这是一个问题,因为它几乎使得css:active伪状态在IE中无用,如果该元素有任何子元素.
有没有人以前遇到过这个问题,甚至更好地找到了解决方法呢?
对于动态添加的元素(Firefox除外),滚动条不会触发Mouseup:
CSS:
#dBox {
height: 100px;
width: 230px;
overflow - y: auto;
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<input type="text" id="s">
JQuery的:
$(function() {
$('#s').focus(function() {
var $dbox = $('<ul id="dBox"></ul>');
for (i = 0; i < 10; i++) $dbox.append('<li>' + i + '</li>');
$(this).after($dbox);
$dbox.bind("mouseup", function() {
alert('in: ');
//console.log ('in: ');
});
});
});
// OR LIKE THIS
$('#s').focus(function() {
var $dbox = $('<ul id="dBox"></ul>');
for (i = 0; i < 10; i++) $dbox.append('<li>' + i + '</li>');
$(this).after($dbox);
});
$('#dBox').live("mouseup", function() …Run Code Online (Sandbox Code Playgroud) 我知道应该同时使用两者,event.button并且event.which作为跨浏览器兼容性问题的安全方面。
但我还是很困惑。我无法理解应该使用哪个鼠标事件属性MouseEvent.button或 的确切上下文MouseEvent.which,以及我应该在哪里避免使用该属性。
此外,与不同浏览器相关的怪癖(例如与这些浏览器相关的值)
组织良好的全面细节将不胜感激。
我有一个填充了复选框的表,如下所示:
我希望能够按住鼠标并拖动以激活多个复选框.我没有丝毫的线索从哪里开始:/我搜索了一个答案,但只找到了另一个人问如何做到这一点,但没有答案.
HTML:
<table>
<tbody>
<tr>
<td><input type="checkbox"></td>
<td><input type="checkbox"></td>
<td><input type="checkbox"></td>
</tr>
<!-- Repeat tr 2x -->
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
jsFiddle: https ://jsfiddle.net/CSS_Apprentice/ge1zx2yg/
此外,我更喜欢保留<input type="checkbox">模型,因为重新设计我的系统会非常耗时,但如果不可能,我会对其他选项持开放态度.任何帮助将不胜感激!
javascript ×3
checkbox ×1
css ×1
dom-events ×1
html ×1
input ×1
jquery ×1
keyboard ×1
live ×1
mouse ×1
mouseevent ×1
pseudo-class ×1
scrollbar ×1