-1

ログインとサインアップの2つのボタンを含むクラシックASPのログインページがあります。また、非表示の送信ボタンがあります。フォーム送信時に、if request.form(submit)=loginをチェックしています。

次にログイン手順

else request.form(signup)=サインアップ

すべてのブラウザで正常に動作しますが、IEではEnterキーを押すと、request.form(submit)= loginおよびrequest.form(signup)= signupが無効になりますが、Enterボタンをクリックすると正常に動作します。request.form(submit)=loginで何も得られない理由。

4

1 に答える 1

0

問題は非常に基本的で基本的なものです。Internet Explorer には「既定の」送信ボタンがありません。すべてのブラウザーは、ENTERキーを介してフォームを送信する場合の動作方法を自由に選択できます。最新のブラウザーは、最初の送信ボタンの値を (クリックされたかのように) 送信する論理的な方法を選択しますが、IE は IE であるため、友好的でない方法を選択します。 . IE のコードを書かない限り、この「問題」の根本を解決する方法はありません。

これを回避する唯一の方法は、JavaScript を使用して、ブラウザが を押したときに特定の送信ボタンを選択するように強制ENTERすることです。このために、最初に一意の ID をログイン ボタンに追加します。

<input type="submit" name="submit" value="login" id="btnLogin" />

onkeypressハンドラーをフォームタグに追加します。

<form action="YourPage.asp" method="POST" onkeypress="if (event.keyCode === 13) { document.getElementById('btnLogin').click(); return false; }">

ENTERこれにより、フォーム内で が押されるたびに、ログイン ボタンのクリックがエミュレートされます。

このアプローチの唯一の欠点は、フォームに が含まれている場合、それらを<textarea>押すENTERとフォームも送信されることです。これは良いことではありません。それらが振る舞うべきように振る舞わせるには、それぞれにこれを追加します:

<textarea onkeypress="event.cancelBubble = true;">

<form>上記は、キープレスイベントへのバブリングからイベントをキャンセルします。

于 2013-01-13T08:41:18.857 に答える