0

我正在使用 IE 8。我想在单击一个输入的组件中启动 javascript 函数 onkeydown。当然我试过这样做:

<script type='text/javascript'>
function filtrOnEnter(formId,event){
    if (event.keyCode == 13) {
            document.getElementById(formId.toString()).click()
    }
}

<rich:calendar id="#{filterToDateId}" value="#{toDate}"
                                datePattern="yyyy-MM-dd" enableManualInput="true"
                                inputStyle="width: 60px;" onkeydown="filtrOnEnter('#{filterActionId}',event)">
</rich:calendar>

此代码在用于常规输入时有效。我还尝试在整个页面上启动这个 filtrOnEnter() javascript 函数 onkeydown。我是这样做的:

<script type='text/javascript'>
     document.onkeydown = myEventHandler;

     function myEventHandler(e){
         filtrOnEnter('stringWithInputId',e);
     }

它甚至适用于rich:calendar,但仅适用于firefox而不是ie8。您对如何以第一种或第二种方式解决此问题有任何建议吗?谢谢。

4

1 回答 1

1

问题是您的参数名称event。较旧的 IE 具有完全不同的事件处理模型。window.event是一个包含所有事件属性的全局对象。现在这个参数隐藏了这个全局对象。你可以这样做:

function filtrOnEnter(formId, evt) {
    evt = evt || window.event;
    if (evt.keyCode === 13) {
          ...
}
于 2013-06-10T09:42:48.040 回答