如何从javascript onkeydown中排除组件

时间:2012-09-28 07:05:12

标签: javascript html

有可能吗?

在我的页面中我得到了

<body onload="debug()" id="content" onkeydown="checkKey()" >

function checkKey() {
    if ((window.event.keyCode > 9) || (window.event.keyCode < 9)) {
        document.actionForm.saveStatus.value = "Not saved";
    }
}

但我不希望当用户转到该页面并使用搜索表单提交搜索时发生这种情况,除非首先保存会话数据,因此我想从搜索框中排除checkkey()的事件:

<input onkeypress="javascript:searchWithEnter('Oversikt','fastsearch')" title="Nummerformat:

PCT/SE2009/123456
PCTSE2009123456
PSE09123456

ITS/SE09/12345
ITSSE0912345
ISE0912345

1234567-8
12345678" type="text" size="40" name="fastsearch">
    <input type="button" value="Sök" onclick="javascript:doSubmitFastSearch('Oversikt','fastsearch')">

我是否应该从body标签中删除onkeypress并设置checkkey()以从单个组件调用?你有什么建议?

1 个答案:

答案 0 :(得分:1)

您可以使用event.stopPropagation来阻止事件冒泡到<body/>

var stop = function(e) {
  e.stopPropagation();
};
var $el = document.getElementsByName("fastsearch")[0];
$el.onkeydown = stop;

但是,除非绝对必要,否则你应该考虑不对<body/>这样的鲁莽事件进行约束。