更新- 我在 html 表单中添加了以下链接。单击后, form.submit() 会正常工作。
<a href="#" onClick="post_to_url('abc');">click</a>
form.submit() 仅在捕获按键时不起作用。
更新 2 - 我将 event.keyCode == 27 更改为 event.keyCode == 65,瞧,按下“A”键,submit() 将起作用。所以问题在于对转义键的一些干扰。有任何想法吗?
更新 3 - 已解决- 解决方案是在下面的代码中将 keydown 更改为 keyup
结束更新
我的目标是捕获用户转义按键并转到新网址。我已经成功捕获了转义键并调用了动态创建表单以使用传递的 url 提交的函数。我已经使用 alert() 验证了 url 已正确传递,但表单不会提交。我无法弄清楚什么不起作用。提前致谢。
捕获转义键的密钥处理程序在这里(注意:解决方案是在下面的代码中将 keydown 更改为 keyup - 为了帖子的完整性,我将其单独放置):
<script type="text/javascript">
window.addEventListener("keydown", function(event) {
// Bind to both command (for Mac) and control (for Win/Linux)
if (event.keyCode == 27) {
if (document.getElementById('url')){
path = document.getElementById('url').value;
post_to_url(path);
}
}
}, false);
</script>
创建要发布的表单的功能在这里:
<script type="text/javascript">
function post_to_url(path, params, method) {
method = method || "post"; // Set method to post by default if not specified.
// The rest of this code assumes you are not using a library.
// It can be made less wordy if you use one.
var form = document.createElement("form");
form.setAttribute("method", method);
form.setAttribute("action", path);
for(var key in params) {
if(params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
}
</script>
我包含了 HTML 代码以使此示例完整:
<body>
<form id = 'close' action='' method="POST">
<input id="url" type="text" value="urlHere">
<input type="submit" name="OK">
<!--when clicking on this - form.submit() works as it should -->
<a href="#" onClick="post_to_url('abc');">click</a>
</form>
</body>