2

Chrome と FF では、テキスト ボックスで Enter キーを押すと、IE ではなく変更がトリガーされるため、同じようにしようとしています。

これは私が今のところ持っているものです: http://jsfiddle.net/nV4SA/8/

//fix for IE to trigger change on enter
    $("input[type=text]")
        .on("change", function(e) {
            $.data(this, "value", this.value);
        }).on("keyup", function(e) {
            if (e.which === 13 && this.value != $.data(this, "value")) {
                $(this).change();
            }
        });

このコードの唯一の欠点は、IE ユーザーのヒットで変更が発生することですが、テキスト ボックスがフォーカスを失うと変更が再び発生します。

4

1 に答える 1

2

トリガーする代わりに、IEでのみchangeトリガーする場合は機能するようです。IEのテストにblur使用します。$.support

/* false in IE.. see jQuery APU */
var changeBubble=$.support.changeBubbles;

$("input[type=text]").on("change", function(e) {
    $.data(this, "value", this.value);
}).on("keyup", function(e) {
    if (e.which === 13 && this.value != $.data(this, "value") && !changeBubble) {
        e.preventDefault();
        $(this).trigger('blur');
    }
})

デモ:http://jsfiddle.net/nV4SA/10/

$.supportAPIドキュメント:http ://api.jquery.com/jQuery.support/

編集:これ$.support.changeBubblesはIE9には当てはまりますが、IE<9には当てはまらないことに注意してください。解決策は防弾ではないかもしれません。眉をひそめていますが、ブラウザスニッフィングを使用するか$.support、IEのすべてのバージョンでのみ機能する他のサポートプロパティを見つける必要がある場合があります

于 2012-11-03T15:05:27.347 に答える