javascript - タグのonkeypress
5 に答える
私のための仕事
<a href="javascript:search();" onkeypress="return runScript(event);">Open in new window using javascript</a>
JavaScript
window.runScript = function (e) {
if (e.keyCode == 13) {
alert('ss');
return false;
}
else {
return true;
}
}
window.search = function () {
alert('s');
}
ライブデモ:フィドル
以下のように html を記述します。tabindex
特定のブラウザでタグをフォーカス可能にするプロパティに注意してください。
<a id="link" href="http://google.com" onkeydown="runScript(event)" tabindex="1">I am a link</a>
ロード時にオートフォーカスが必要な場合は、focus
以下に示すように jQuery 関数を使用できます。
$(document).ready(
function(e){
$("#link").focus();
}
);
次に、あなたの機能
function runScript(e){
if(e.keyCode == 13){
alert("pressed enter key");
}
}
e.preventDefault();
リンクが href に読み込まれないようにするには、呼び出す(または一部のブラウザーでは false を返す) 必要があります。
function runScript(e){
e.preventDefault();
if(e.keyCode == 13){
alert("pressed enter key");
}
return false;
}
ここでデモを参照してください: http://jsfiddle.net/diode/hfJSn/9/show ページが読み込まれたら Enter キーを押します
ENTER キーは実際に onclick イベントをトリガーします。
<a href="#" onclick="alert('hello!');">
これは、href 内の search() 関数が onkeypress イベントの前に実行されることを意味します。
それは私のブラウザで機能しますが、実際にやりたいことを達成する方法ではないと思います...(多分?)
第一に、おそらく何もしたくないreturn
ので、実行するだけで実行できonkeypress="runScript(e)"
ます。その関数が値を返す場合、どこにも行きません...
第 2 に、キーダウン イベントがアンカー ( <a>
) 要素で発生することはほとんどありません。もちろん、ユーザーがフォーカスを得るまで他の要素をタブで移動してからキーを押した場合を除きます (通常、ブラウザはその要素を「強調表示」します)。ページ全体ではない場合、現在キーボード フォーカスがあります)。検索ボックスなどに入力した後に誰かが Enter キーを押したときにスクリプトを実行したいですか? その場合、おそらく検索ボックス自体でイベントをリッスンする必要があるため、<input id="mySearchBox" onkeydown="runScript(e)">
フォーカスやテキストの入力に関係なく、ユーザーが Enter キーを押すたびに実行するようにする場合は、その要素の onkeydown 属性として追加します (例: ) 。特定のフィールドについては、edmastermind29 のコメントにあるように、ドキュメント全体にイベント リスナーを追加してください。
これをスクリプトに追加してみましたか?
document.onkeypress = runScript;