输入密钥在Firefox中不起作用 - onkeypress(我知道有“答案”但......)

时间:2015-12-10 16:28:24

标签: firefox xpages onkeypress

我已经看过有关此问题的所有帖子,但我仍然无法让Enter键在Firefox中运行。这是我所有的代码迭代,我显然已经改变了一百次,试图让它工作。我可以让它在IE中工作,而不是Firefox。替代问题:我是xPages的新手。我在哪里定义xPage中的函数,还是必须创建脚本库并将其添加到资源?谢谢大家。

麦克

var metaChar = false;
var key = event.keyCode || event.which;
if (key == 13) {
    metaChar = true;
    event.returnValue = true;
    alert("true13");
}
if (key != 13) {
    if (metaChar) {
        alert("false");
        metaChar = false;
    } else {
        alert("true");
        event.returnValue = false;
    }
}


 
 
/*
var vevent = event.keyCode || event.key // IE does not pass event to the function
if(vevent == window.event){
    code = event.keyCode;
}else{
    code = event.key;
} 

if(code == 13){ 
    event.returnValue = true; 
    alert("True"); 
} else { 
    event.returnValue = false; 
    return false;
    alert("False"); 
}
*/

var e = event.keyCode || event.which;
charCode = e.keyCode || e.which;

if(charCode == 13){ 
    return true; 
    alert("True"); 
} else { 
    return false; 
    alert("False"); 
}

1 个答案:

答案 0 :(得分:2)

我怀疑您的问题在于尝试在您的javascript中使用event。在XPages中,您需要使用不同的引用thisEventthis link under "Getting event information"处的一些信息。这是XPages在页面加载时添加事件的方式的一个怪癖。

根据您的情况,我创建了一个简单的示例XPage,它向您展示了如何在eventHandler中捕获回车键或如果您想要使用内联函数。这适用于Chrome,Firefox和Internet Explorer 11。

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:panel id="panel1">
        <script type="text/javascript">
            var enterKey = function(eventParam) {
                var key = eventParam.keyCode || eventParam.which;
                console.log("key = " + key);
                if (key == 13) {
                    alert("script function - enter");
                    return true;
                }else{
                    alert("script function - other character");
                    return false;
                }
            }
        </script>
        <xp:inputText id="button1">
            <xp:eventHandler event="onkeypress" submit="false">
                <xp:this.script><![CDATA[
                    var key = thisEvent.keyCode || thisEvent.which;
                    console.log("key = " + key);
                    if (key == 13) {
                        alert("button event script - enter");
                        return true;
                    }else {
                        alert("button event script - other character");
                        return false;
                    }
                    ]]>
                </xp:this.script>
            </xp:eventHandler>
        </xp:inputText>
        <xp:br />
        <xp:br />
        <xp:inputText id="button2">
            <xp:eventHandler event="onkeypress" submit="false">
                <xp:this.script><![CDATA[
                    enterKey(thisEvent);
                    ]]>
                </xp:this.script>
            </xp:eventHandler>
        </xp:inputText>
    </xp:panel>
</xp:view>