0

データテーブルと行グループ化を使用して、プロジェクトに検索のリセット ボタンを追加しました。IE7 を除くすべてのブラウザで正常に動作します。IE7 では、[検索をリセット] ボタンと [すべて展開/すべて縮小] ボタンが表示されなくなります。

デバッガー (IE コンソール) に次のエラーが表示されます。

SCRIPT87: 引数が無効です

jquery.min.js、2 行目の文字 31006

関数 ResetSearchField(); を呼び出しているようです。違反のソースです。

誰かがこの問題を解決するために私に手を差し伸べることができますか? 助けていただければ幸いです。問題を説明するためにjsfiddleをセットアップしました: http://jsfiddle.net/lbriquet/SG8Dm/4/

私が使用しているコードは次のとおりです。

$(document).ready(function() {
var oTable = $('#example').dataTable({
    "oLanguage": {
        "sSearch": " Table search:"
    },
    "bPaginate": false,
    "iDisplayLength": 100,
    "bLengthChange": false,
    "bJQueryUI": true,
    "sDom": 'Tlfrtip'
}).rowGrouping({
    bExpandableGrouping: true,
    bExpandSingleGroup: false,
    iExpandGroupOffset: -1,
    asExpandedGroups: [""]
});
ResetSearchField();
$('.expandedOrCollapsedGroup').live('click', function() {
    if ($(this).hasClass('collapsed')) {
        $(this).addClass('expanded').removeClass('collapsed').val('Collapse All').parents('.dataTables_wrapper').find('.collapsed-group').trigger('click');
    }
    else {
        $(this).addClass('collapsed').removeClass('expanded').val('Expand All').parents('.dataTables_wrapper').find('.expanded-group').trigger('click');
    }
});
oTable.live('filter', function() {
    clearTimeout(oTable.data('timeout'));
    var timeoutId = setTimeout(function() {
        if ($('label:contains(Table search: ) input').val() != '') {
            $('.group-item-expander.collapsed-group').trigger('click');
        }
        else {
            $('.group-item-expander.expanded-group').trigger('click');
        }
    }, 1000);
    oTable.data('timeout', timeoutId);
});
$("#resetsearch").live('click', function(e) {
    oTable.fnFilter('');
    GridRowCount();
});
GridRowCount();
new FixedHeader(oTable);
});

function GridRowCount() {
$('span.rowCount-grid').remove();
$('input.expandedOrCollapsedGroup').remove();

$('.dataTables_wrapper').find('[id|=group-id]').each(function() {
    var rowCount = $(this).nextUntil('[id|=group-id]').length;
    $(this).find('td').append($('<div />', {
        'class': 'rowCount-grid'
    }).prepend($('<b />', {
        'text': "(" + rowCount + ")"
    })));
});

$('.dataTables_wrapper').find('.dataTables_filter').prepend($('<input />', {
    'type': 'button',
    'class': 'expandedOrCollapsedGroup collapsed',
    'value': 'Expand All'
}));
};

function ResetSearchField() {
$('.dataTables_wrapper').find('.dataTables_filter').append($('<input />', {
    'type': 'submit',
    'class': 'ui-icon ui-icon-closethick float-right',
    'id': 'resetsearch',
    'border': 'none'
}));
};
4

1 に答える 1

0

解決策を見つけました!スクリプト呼び出しの後、次のように関数 ResetSearchField を無効にしました。

<!--[if IE 7]>
<script type="text/javascript">
  function ResetSearchField() { }
</script>
<![endif]-->
于 2012-11-12T12:00:41.660 に答える