StopPropagation键盘事件

时间:2013-09-13 13:38:35

标签: javascript html keyboard-events

我有一点HTML

<input id="legalWellName" readonly data-bind="value: LEGAL_WELL_NAME" class="welllabel" />

和这个脚本:

$('#legalWellName').keyup(function (e) {
    if (e.stopPropagation) { e.stopPropagation(); }
    if (e.cancelBubble != null) { e.cancelBubble = true; }
});
$('#legalWellName').keydown(function (e) {
    if (e.stopPropagation) { e.stopPropagation(); }
    if (e.cancelBubble != null) { e.cancelBubble = true; }
});
$('#legalWellName').keypress(function (e) {
    if (e.stopPropagation) { e.stopPropagation(); }
    if (e.cancelBubble != null) { e.cancelBubble = true; }
});

但是,如果我点击legalWellName输入并点击BACKSPACE,它就好像我在浏览器(IE9)中点击了BACK一样。 BACKSPACE有什么特别之处吗?我已经设置了readonly,所以没有其他键有任何影响(我甚至不需要stopPropagation逻辑)。如何防止BACKSPACE生效?

1 个答案:

答案 0 :(得分:1)

防止冒泡只能防止事件在DOM中从元素冒泡到另一个元素。您似乎更愿意阻止 Backspace 的默认操作:

if (e.preventDefault) {
    e.preventDefault();
}
e.returnValue = false;

请注意,您可以安全地将属性添加到e而不进行特征检测。