クロスブラウザに問題があります。IE7-9 をサポートする必要があります。私のサイトは IE7 標準に設定されています - 変更できません。次に、最新の chrome、safari、firefox をサポートする必要があります。
入力時にテキストボックスでキーアップイベントをヒットしたい。問題は、発生したくないフォームを送信しているそのページのフォームにキープレスイベントが追加されていることです。サンプル アプリケーションは次のようになります。
ジャバスクリプト:
$(document).ready(function () {
$("form").bind("keypress", function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
$("#log1").append("Key press - Form event");
}
});
$("#myInput1").bind("keypress", function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code != 13) {
return true;
}
$("#log2").append("Enter pressed - input event");
//if (!e) var e = window.event;
e.cancelBubble = true;
e.returnValue = false;
if (e.stopPropagation) {
e.stopPropagation();
//e.preventDefault();
}
});
$("#myInput1").bind("keyup", function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code != 13) {
return true;
}
$("#log1").append("Key up - Enter pressed - input event");
});
});
HTML
<li onkeypress="alert('hi')">
<input id="myInput1" type="text" />
<div id="log1"></div>
<div id="log2"></div>
</li>
e.preventDefault() を使用すると、キーアップ イベントがヒットしません。使用しないと、ページがポストバックされます。
すべてのブラウザーで、Enter キーを押すと、「キーアップ - Enter が押された - 入力イベント」が画面に書き込まれるようにしたいと考えています。
どんな助けでも大歓迎です。ありがとうございました。