我在Android下遇到了Firefox / Chrome的问题。
当我在输入框中键入文本时(请参阅下面的代码),键入字母时不会触发onkeypress,onkeyup和onkeydown事件,但是当键入“%”符号或按空格键时,它会触发。
在Android“预装”浏览器中,一切都很好。
另一个非常罕见的事情,如果我的光标不是最后一个字符,行为会有所不同......如果我的光标位于文本的中间,则在Firefox下,所有事件都会针对任何键触发。在Chrome中,事件onkeyup和onkeydown会因按下一个键而被触发两次,但onkeypress不会被触发。
我在不同的设备上测试了它,但问题类似。
我在互联网上找不到任何类似的问题。有人之前已经遇到过这个问题吗?你是怎么解决的?
像Amazon.com这样的网站可以自动完成,因此必须有一个解决方法......
请注意,最新版本的Firefox和Chrome
中的问题已消失非常感谢您的帮助。
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>onKeyXxx event test</h1>
<input type="text" onkeydown="alert('DOWN');" onkeypress="alert('Press');" onkeyup="alert('UP');">
<hr/>
</body>
</html>
答案 0 :(得分:4)
setInterval成功了。
我不确定如何在Script.aculo.us(我用于自动选择下拉列表的库)中实现它,但我会找到一种方法。
以下是实现setTimer的解决方案示例:)
<!DOCTYPE html>
<html>
<head>
<script>
typedText="";
function checkTextChange(){
if (document.getElementById("test").value != typedText){
typedText=document.getElementById("test").value;
document.getElementById("output").innerHTML=typedText;
return true;
} else {
return false;
}
}
if (navigator.appVersion.indexOf("Android")>-1 && (navigator.appVersion.indexOf("Safari")==-1 || navigator.appVersion.indexOf("Chrome")>-1)){
alert("Using work around");
var myVar = setInterval(function(){checkTextChange();},200);
}
</script>
</head>
<body >
<h1>onKeyXxx event test</h1>
<form>
<input type="text" name="test" id="test" onkeydown="checkTextChange();" onkeypress="checkTextChange();" onkeyup="checkTextChange();">
</form>
<div id="output"></div>
<hr>
</body>
</html>
答案 1 :(得分:3)
您不能直接发出警告请遵循以下任何方式
<input type="text" onkeydown="JavaScript:return alert('DOWN');">
OR
<input type="text" onkeydown="return myFun();">
您可以在文档中的任意位置和标记之间定义函数。