IE8 で「Enter」キーを押してもフォームがポストされない
-
12-09-2019 - |
質問
必要に応じてログイン フォームを渡すために PHP を使用しています。コードは次のとおりです。
$htmlForm = '<form id="frmlogin">'.'<label>';
switch(LOGIN_METHOD)
{
case 'both':
$htmlForm .= $ACL_LANG['USERNAME'].'/'.$ACL_LANG['EMAIL'];
break;
case 'email':
$htmlForm .= $ACL_LANG['EMAIL'];
break;
default:
$htmlForm .= $ACL_LANG['USERNAME'];
break;
}
$htmlForm .= ':</label>'.
'<input type="text" name="u" id="u" class="textfield" />'.
'<label>'.$ACL_LANG['PASSWORD'].'</label>'.
'<input type="password" name="p" id="p" class="textfield" />'.
'<center><input type="submit" name="btn" id="btn" class="buttonfield" value="Sign in to extranet" /></center>'.
'</form>';
return $htmlForm;
問題は、ユーザーが IE8 で Enter キーを押してもフォームが送信されず、ユーザーは送信ボタンを押す必要があることです。
これを修正するにはどうすればよいですか?
解決
これが本当の問題であり、あなたは常にフォームのonkeypress
イベントを行い、入力します。キーが押されたかどうかを確認することができ、別の解決策を見つけることができません。
編集: ここでは、正しいコードはマシンの答えに応じています:
$htmlForm .= ':<form><label>'.$ACL_LANG['USERNAME'].'</label>'.
'<input type="text" name="u" id="u" class="textfield" />'.
'<label>'.$ACL_LANG['PASSWORD'].'</label>'.
'<input type="password" name="p" id="p" class="textfield" />'.
'<center><input type="submit" name="btn" id="btn" class="buttonfield" value="Sign in to extranet" /></center>'.
'</form>';
他のヒント
また、この楽しい楽しいのバグに気をつけます:
私はあなたが入力した上で提出していないだろう、まだJavascriptを、IE8で、後でそれを表示しても、フォームは、ページの読み込み時にdisplay:none
されている場合というハードな方法を学びました。
しかし、それはページのロード時に隠された、とあなたはそれが後にdisplay:none
に設定していない場合は、onDOMReadyのように、それは働きます! WTF
詳細およびここに回避策:ます。http:// www.thefutureoftheweb.com/blog/submit-a-form-in-ie-with-enterする
クリックをシミュレートします。
ここで私はjQueryの中でそれを行う方法です。
// Recreating normal browser behavior in Javascript. Thank you, Microsoft.
jQuery.fn.handle_enter_keypress = function() {
if ($.browser.msie){
$(this).find('input').keypress(function(e){
// If the key pressed was enter
if (e.which == '13') {
$(this).closest('form')
.find('button[type=submit],input[type=submit]')
.filter(':first').click();
}
});
}
}
$('form').handle_enter_keypress();
ここに Microsoft のリンクがあります。これはあなたのために光を当てるかもしれません。
リンクをざっと読むと、実際には Enter キーによるフォーム送信のバグと考えられるかもしれませんが、これは Microsoft によって IE8 用に修正されると思われます。
Enter キーを使用してフォームを送信するときの IE の異常
編集:
現在は削除されていますが、もう一つ リンク もう一度カバーします(ページの下部)。 2008 年 12 月 18 日の IE ブログで定義し、バグについて説明しました。.
あなたは自分のコードスニペットから省略された開口部のformタグを持っていますか?
action
要素にform
属性は、HTMLの仕様によって必要とされます。多分それは良い仕事でしょう。
私はアクションと方法で、同様にこれを再現することができました。ページ上の他のすべてのコードを剥奪し、それはまだ生産されます。しかし、私が見てきたフォームは、=「」
アクションとIE8で働きます