keypownでkeypressイベントを停止する方法。keypressイベントを停止する
私はkeypressイベントを停止する必要があるという点でkeydownハンドラを持っています。
実際には、フォームとテキストボックスがあります。
whnユーザーが「enter」キーを押すと、keydownはイベントをトリガし、ハンドラを持っています。
フォーム提出はkeypressでトリガされるので、私のkeydownハンドラでkeypressイベントを停止する必要があります。
keypownでkeypressイベントを停止する方法。keypressイベントを停止する
私はkeypressイベントを停止する必要があるという点でkeydownハンドラを持っています。
実際には、フォームとテキストボックスがあります。
whnユーザーが「enter」キーを押すと、keydownはイベントをトリガし、ハンドラを持っています。
フォーム提出はkeypressでトリガされるので、私のkeydownハンドラでkeypressイベントを停止する必要があります。
function onKeyDown(event) {
event.preventDefault();
}
http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Event-preventDefault
または
function onsubmit(event) {
return false;
}
イベントの伝播に
書き込み、KeyDownイベントハンドラで
<script type="text/javascript">
function keyDn(obj)
{
if(window["event"]["keyCode"]==48) // key 0 will disabled keyPress event
{
obj["onkeypress"]=null;
}
}
function keyPs(obj)
{
alert("Keypress");
}
</script>
<form id="form1" runat="server">
<div>
<input type="text" onkeydown="keyDn(this)" onkeypress="keyPs(this)" />
</div>
</form>
を停止する場合はfalseリターン。
イベントハンドラでevent.cancelBubble = true
を試してください。
私はevent.preventDefault()を取得できました。 SafariとFirefoxでは動作しますが、IE7やIE8では動作しません。
Enterキーのみを無効にする場合は、キー値(Enterキーは13)も確認し、そのキーのevent.preventDefault()を設定するだけです。
誰でもIE7/8またはOperaの回答を思い付くことができますか?
私はこれが非常に古いスレッドであることを知っていますが、あなたの質問はまだ答えられていないので、私はします。実際には、指定した問題の回避策が見つかりました。 フォームをfalseに戻して送信し、送信ボタンを非表示にして無効にします。その後、onsubmitイベントの戻りfalseプロパティを削除し、ボタンの無効化をも削除する2番目のボタン(これは型送信ではない)を作成します。その後、このボタンを使用して、実際の送信ボタンのクリックイベントをシミュレートします。ここに実際の例があります: http://jsfiddle.net/rsauxil/qyf8L/6/ – JohannesB
キーボードイベントのデフォルトアクションを防ぐには、オペラでkeypress
イベントを使用する必要があります。は、すべてのブラウザでデフォルトの動作を防止しますが、オペラでは動作しません。
this long list of inconsistenciesを参照してください。
ここに私がアップ/ダウン/右/左キーのイベントバブルを停止:
$(document).on("keydown", function(e) {
if(e.keyCode >= 37 && e.keyCode <= 40) {
e.stopImmediatePropagation();
return;
}
});
私も上記の回答からe.preventDefaultまたはevent.cancelBubble =真を試してみましたが、彼ら影響はありませんでした。
event.preventDefault();オペラで動作していません – Santhosh
var suppressEvent = false; 関数onKeyDown(イベント){ suppressEvent = true; event.preventDefault(); } 関数onKeyPress(イベント){ if(suppressEvent)event.preventDefault(); } – andho
ありがとうございます@ジョン。これは私のカスタムイベントハンドラがhtmlテーブルの下にあるセルに移動するためのカスタムイベントハンドラをどこに持っていたのかという問題を助けてくれました_AND_は新しいセルに不必要な新しい行を追加していました。 Enterキーのデフォルトイベントをキャンセルするだけでした。 –