0

我有一点点 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 有什么特别之处吗?我已经设置了只读,所以没有其他键有任何效果(我什至不需要 stopPropagation 逻辑)。如何防止 BACKSPACE 生效?

4

1 回答 1

2

防止冒泡仅防止事件从元素冒泡到 DOM 中的另一个元素。看起来您宁愿阻止以下默认操作Backspace

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

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

于 2013-09-13T14:43:31.363 回答