Javascript 以编程方式将键发送到输入字段?
我正在为带有自定义键盘的机顶盒编写一个web门户 键盘有大多数标准字符键,但没有退格 因为还有其他一些自由自定义键,所以当我在输入字段或文本区域中时,我想将其中一个映射到backspace 问题是:如何以编程方式向输入字段发送退格Javascript 以编程方式将键发送到输入字段?,javascript,html,Javascript,Html,我正在为带有自定义键盘的机顶盒编写一个web门户 键盘有大多数标准字符键,但没有退格 因为还有其他一些自由自定义键,所以当我在输入字段或文本区域中时,我想将其中一个映射到backspace 问题是:如何以编程方式向输入字段发送退格 或者出于这个原因:我如何通过编程将任何键(如箭头键)发送到输入字段?如果您在web浏览器中,您不能伪造真实的输入事件,如键盘和鼠标事件(出于安全原因) 但是,您将能够检测到正在按下的其他自定义键,因此您可以对要使用的键的onKeyDown事件做出响应,并在检测到输入字
或者出于这个原因:我如何通过编程将任何键(如箭头键)发送到输入字段?如果您在web浏览器中,您不能伪造真实的输入事件,如键盘和鼠标事件(出于安全原因)
但是,您将能够检测到正在按下的其他自定义键,因此您可以对要使用的键的onKeyDown事件做出响应,并在检测到输入字段被按下时更新它…这并不是您所要求的,但是Control-H在大多数上下文中与backspace相同。使用onkeypress和JavaScript。在脚本中,您可以检查输入的映射到退格的字符,并使其对字段中的文本执行该操作。假设浏览器支持W3C事件模型,您可以创建一个
KeyEvent
并使用输入字段的dispatchEvent
方法对其进行调度。mozilla.org上有一个视频。上面还有一些链接;-)
更新:以下代码已经在Firefox 3.5中进行了测试,并成功地通过文本字段中的字符退格:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
window.onload = function() {
var field = document.getElementById("foo");
var button = document.getElementById("bar");
button.addEventListener("click", function(event) {
var keyEvent = document.createEvent("KeyboardEvent");
keyEvent.initKeyEvent("keypress", true, true, null, false, false, false, false, 8, 0);
field.dispatchEvent(keyEvent);
}, false);
}
</script>
</head>
<body>
<div>
<input type="text" id="foo" value="abcdef">
<button id="bar" type="button">Fire key event</button>
</div>
</body>
</html>
在此处插入标题
window.onload=函数(){
var字段=document.getElementById(“foo”);
var按钮=document.getElementById(“bar”);
按钮。addEventListener(“单击”),函数(事件){
var keyEvent=document.createEvent(“KeyboardEvent”);
initKeyEvent(“按键”,真,真,空,假,假,假,假,假,8,0);
字段。dispatchEvent(keyEvent);
},假);
}
点火钥匙事件
我希望不会出现这种情况,但如果你说的是真的,我想这是唯一的解决方案。你当然可以创建和发送事件。看起来WebKit不支持initKeyEvent-我会看看是否能找到解决办法。这在Firefox的较新版本(在Firefox 13.0中测试)中不起作用,在IE中也不起作用。initKeyEvent()
现在是,但也可以改为使用类似event=newkeyboardevent(typeArg,KeyboardEventInit)的内容代码>你说的“但是Control-H”是什么意思,发送CTRL+H?在我使用过的任何浏览器中,CTRL+H都会显示历史记录。