输入键在 Firefox 中不起作用 - onkeypress(我知道有 "answers" 但是...)
Enter key not working in Firefox - onkeypress (I know there are "answers" but...)
我已经看过关于这个问题的所有帖子,但我仍然无法在 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");
}
我怀疑您的问题在于尝试在 javascript 中使用 event
。在 XPages 中,您需要使用不同的参考 thisEvent
,一些信息位于 this 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>
我已经看过关于这个问题的所有帖子,但我仍然无法在 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");
}
我怀疑您的问题在于尝试在 javascript 中使用 event
。在 XPages 中,您需要使用不同的参考 thisEvent
,一些信息位于 this 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>