IE でかなり奇妙な動作に気付きました。
入力テキスト フィールドが 1 つと送信ボタンがある HTML フォームがあります。
[送信] をクリックすると、必要な処理を行うクライアント側の JavaScript 関数を実行する必要があります。
テキストフィールドでのポストバックを防止したいとき(Enterキーを押したとき)。
次のようなキー プレス JavaScript 関数を追加しました。
<input type=text onkeypress="return OnEnterKeyPress(event)" />
function OnEnterKeyPress(event) {
var keyNum = 0;
if (window.event) // IE
{
keyNum = event.keyCode;
}
else if (event.which) // Netscape/Firefox/Opera
{
keyNum = event.which;
}
else return true;
if (keyNum == 13) // Enter Key pressed, then start search, else do nothing.
{
OnButtonClick();
return false;
}
else
return true;
}
奇妙なことに、これは機能しません。
しかし、テキストフィールドを関数に渡すと:
<input type=text onkeypress="return OnEnterKeyPress(this,event);" />
function OnEnterKeyPress(thisForm,event) {
var keyNum = 0;
if (window.event) // IE
{
keyNum = event.keyCode;
}
else if (event.which) // Netscape/Firefox/Opera
{
keyNum = event.which;
}
else return true;
if (keyNum == 13) // Enter Key pressed, then start search, else do nothing.
{
OnButtonClick();
return false;
}
else
return true;
}
ポストバックを防ぐことができます。
ここで正確に何が起こっているかを誰かが確認できますか?
HTML フォームには、テキスト ボックスと送信ボタンが 1 つだけあります。
送信時に実行された JavaScript 関数の結果の出力は、別の div の HTML テキスト領域に表示されます。