更新- 次のリンクを 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 に移動することです。エスケープキーを正常にキャプチャし、渡された URL で送信するフォームをオンザフライで作成する関数を呼び出しました。URL が alert() で正しく渡されたことを確認しましたが、フォームが送信されません。何が機能していないのかわかりません。前もって感謝します。
エスケープ キーをキャプチャするキー ハンドラは次のとおりです (注: 解決策は、以下のコードで 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>