0

ユーザーがテキストボックスにEnterキーを押したときに、jqueryボタンクリックイベントを介してフォームを送信しようとしています。

以下は私のコードです

<script>
    $(function() {
       $('.buttonComment').live("click", function(e) {
          alert('er');
       });
     });​
</script>

<form>
<input type="text" class="inputComment" id="inputComment<?php echo $msg_id;?>" value=""/>
<input type="submit" class="buttonComment" id="<?php echo $msg_id;?>" value='' />
<i id="iComment<?php echo $msg_id;?>"/>
</form>

上記のコードは Firefox でうまく動作します。しかし、Internet Explorer では、ボタン クリック イベントを発生させることができません。代わりに、フォームを送信します。

送信ボタンをクリックすると、正常に動作します。しかし、カーソルをテキストボックスに置いてEnterキーを押すと、正しく機能しません。

要するに、私は Facebook のようなコメント システムを実現しようとしています。

ここにjsFiddleの例があります

4

2 に答える 2

0

ボタンに があることを確認しますtype="submit"。これは IE で言及する必要があります。Chrome と Firefox では、これがデフォルトのタイプのようです。

私はこれを使用していますが、どこでも問題なく動作します。クリックではなく、フォーム送信ハンドラーを試してください。

<form id="1234">
    <input type="text" />
    <button type="submit" id="asdasd" >Button </button>
</form>

<script>
   $("#1234").submit(function(){
      alert("Hello World");
   })
</script>
于 2012-08-31T17:25:28.530 に答える
0

私は最近これに出くわしました!投稿データが正しく渡されたので、それが起こっているとは信じられませんでした!

これには論理的な説明はありませんでしたが、これは単に 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"] の比較

于 2012-08-31T16:24:49.470 に答える