1

Yii フレームワークでサイトを開発しています。

GridView フィルター入力ボックスに検索するキーワードを入力してヒットEnterすると、フォームがサーバーに送信されません。ただし、入力フィールドの外側でマウスを叩いTabたりクリックしたりしても機能します。

問題は IE と Opera にあります。Firefox は問題ありません。

編集

dInGd0nG同様の問題の回避策でこのフォーラムのトピックを提案しましたjquery.yiigridview.jsが、その回避策の投稿以降、コードが変更されました。on()の代わりに関数を使用するようになりlive()ました。

現在、コードはかなり異なっています。自分で新しい回避策を思いつくことができるかどうかはわかりません。誰かがそのパッチを現在のものに適応させることはできますjquery.yiigridview.jsか?

したがって、私が理解している限り、これはフィルター入力の送信を処理する部分です。

$(document).on('change', inputSelector, function () {
    var data = $(inputSelector).serialize();
    if (settings.pageVar !== undefined) {
        data += '&' + settings.pageVar + '=1';
    }
    $('#' + id).yiiGridView('update', {data: data});
});

Firefox で動作し、IE や Opera では動作しません。

それを修正する方法はありますか?

編集2

これを思いついたのは、Enterキーを押すとIEとOperaがフィルターリクエストを送信するようにするためです。

if($.browser.msie || $.browser.opera) {
    $(document).on('keypress', inputSelector, function(event){
        if(event.keyCode == 13) {
            var data = $(inputSelector).serialize();
            if (settings.pageVar !== undefined) {
                data += '&' + settings.pageVar + '=1';
            }
            $('#' + id).yiiGridView('update', {data: data});
        }
    });
} 

しかし、それはちょっと醜いです。

4

1 に答える 1

0

ここに記載されているように、これは jquery の問題です。そのページにも作業があります。こちらのフォーラム投稿もご覧ください。

于 2012-05-28T13:55:43.533 に答える