私は最近これに出くわしました!投稿データが正しく渡されたので、それが起こっているとは信じられませんでした!
これには論理的な説明はありませんでしたが、これは単に Internet Explorer の見過ごされたバグだと言わざるを得ません。
解決策 1
Internet Explorer は読み込み時にページをスキャンし、どの送信ボタンが表示されているかを判断し、入力して送信する機能をそれらのフォームに添付しているようです。
このシナリオを修正するには、次の jQuery コードを使用できます。
$(document).ready(function() {
$('input').keydown(function(e){
if (e.keyCode == 13) {
$(this).parents('form').submit();
return false;
}
});
});
return false は Internet Explorer ではかなり重要です。これは、return キーを押したときに聞こえるビープ音を防止するためです。ビープ音は「ここで Enter キーを押すことはできません!」と言っていますが、false を返すとキーの押下がキャンセルされるため、ブラウザーは警告しません。
これと人々の意見の詳細を読む: Enter を使用して IE でフォームを送信する
解決策 2
他の解決策は可能ですが、私の場合は機能しませんでした。非表示の入力フィールドを追加することです:
<!-- Fix for Internet Explorer bug (One text input and submit, disables submit on pressing "Enter") -->
<div style="display:none">
<input type="text" name="hiddenText"/>
</div>
解決策 3
もう 1 つの解決策は、ユーザーのブラウザーを検出し、それが Internet Explorer の場合は Enter キーをキャンセルし、適切な送信のためにユーザーに送信ボタンをクリックさせることです。
function browserIE(){
if($.browser.msie && parseInt($.browser.version) <= 8){ // Let's detect if it's Internet Explorer 8 or lower
return true;
}
return false;
}
$(document).keypress(function(event) { // Bind keyboard events
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode == '13' && browserIE()){ // When user hits 'enter key' (keyCode 13) and only when the browser is Internet Explorer version 8 or lower
event.preventDefault();
event.stopPropagation();
}
});
これは、Internet Explorer ユーザーに送信ボタンをクリックして適切な送信を実行させる唯一の方法です。なぜなら、前に述べたように、フィールドで Enter キーを押すと適切な送信が行われず、単純なページのリロードになってしまうからです。
jsFiddle の作業例
また、読むことをお勧めします: Internet Explorer 以降でのボタンと入力 [type="submit"] の比較