Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以编程方式将键发送到输入字段?_Javascript_Html - Fatal编程技术网

Javascript 以编程方式将键发送到输入字段?

Javascript 以编程方式将键发送到输入字段?,javascript,html,Javascript,Html,我正在为带有自定义键盘的机顶盒编写一个web门户 键盘有大多数标准字符键,但没有退格 因为还有其他一些自由自定义键,所以当我在输入字段或文本区域中时,我想将其中一个映射到backspace 问题是:如何以编程方式向输入字段发送退格 或者出于这个原因:我如何通过编程将任何键(如箭头键)发送到输入字段?如果您在web浏览器中,您不能伪造真实的输入事件,如键盘和鼠标事件(出于安全原因) 但是,您将能够检测到正在按下的其他自定义键,因此您可以对要使用的键的onKeyDown事件做出响应,并在检测到输入字

我正在为带有自定义键盘的机顶盒编写一个web门户

键盘有大多数标准字符键,但没有退格

因为还有其他一些自由自定义键,所以当我在输入字段或文本区域中时,我想将其中一个映射到backspace

问题是:如何以编程方式向输入字段发送退格


或者出于这个原因:我如何通过编程将任何键(如箭头键)发送到输入字段?

如果您在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都会显示历史记录。