场景: HTML 页面中有一个输入元素,您可以在其中输入任何数字/文本。如果输入了 2 个连续字符,那么我将调用 showModalDialog() 方法来打开一个弹出窗口,该窗口具有另一个输入元素。无论在父页面中输入的字符都将被复制到该搜索框中。
问题:如果用户快速输入文本(不中断)以搜索超过 2 个字符(例如apple),则输入的第 3 和/或第 4 个字符会被遗漏(keyUp 事件不会跟踪)。我的意思是只有一个单词被复制到弹出窗口中的搜索框中。所以用户需要重新输入文本。
需要的解决方案:每当用户输入任何文本时,都需要触发弹出窗口,并且需要将所有字符复制到弹出窗口的搜索框中
环境:仅在IE9中复制
语言: HTML、Javascript
注意:我分析的是,由于触发弹出窗口有延迟,因此错过了 2 个字符后键入的字符。我不知道为什么这只发生在 IE9 中,我也无法升级到 IE10 来解决问题。
我仍然坚持这个问题。有没有其他解决方案?还有其他方法可以使用其他元素获得模态对话框的所有功能吗?
以下是父 HTML 的示例代码片段:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test Page</title>
<script type="text/javascript">
var checkSeq = new RegExp("[a-zA-Z]{2}", "i");
function handleShowModalPopUp(fieldValue){
if(checkSeq.test(fieldValue)){
window.showModalDialog("popUpPage.html", document.getElementById('searchElem').value, "");
}
}
</script>
</head>
<body>
Enter Search Term :
<input type="text" id="searchElem" value="" onkeyup="handleShowModalPopUp(this.value)">
</body>
</html>
这是弹出窗口 HTML ( popUpPage.html ):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Search Dialog</title>
<script type="text/javascript">
function handleOnload(){
var searchVal = window.dialogArguments;
if(null!= searchVal){
document.getElementById('searchElem').value = searchVal;
}
}
</script>
</head>
<body onload="handleOnload()">
<input type="text" id="searchElem">
<input type="button" value="Search">
</body>
</html>