Jquery выпадающий и сетка с шаблоном не работает в IE9 - PullRequest
0 голосов
/ 21 августа 2011

Я много тестировал. Код работает нормально в FIREFOX 5, но тот же код не работает в IE9.

Ниже приведен код, который вообще не работает в IE9 для DROPDOWN и GRID. Когда я очищаю IE кеш и обновляю страницу, чем сетка заполнен новыми значениями. Я вижу, что AJAX звонит нормально.

ПРОБЛЕМА IE9:

Выпадающий код пополнения счета не работает в IE9. Функция JQuery для пополнения выпадающего списка находится в файле JS.

var ReloadMenu = (function () {
    $.getJSON("/HeaderMenu/GetHeaderMenu", function (data) {
        $('#headermenuDd >option').remove();
        $("#headermenuDd").prepend("<option value='' selected='selected'></option>");

        var text = $.trim($("#dropdowntext").val());
        var options = $("#headermenuDd");
        $.each(data, function () {
            if (text == this.Id)
                options.append($("<option class=\"green\"></option>").val(this.Id).text(this.DisplayName));
            else
                options.append($("<option></option>").val(this.Id).text(this.DisplayName));
        });
    });
});

Код пополнения сетки не работает в IE9. Функция JQuery для пополнения сетки находится в файле JS.

var ReloadGrid = (function () {
    $.getJSON("/HeaderMenu/GetHeaderGrid", function (data) {
        $('table.gridTable > tbody').empty();
        (data.length <= 0) ? $("#gridBtn").hide() : $("#gridBtn").show();
        for (var i = 0; i < data.length; i++) { data[i].num = i + 1; }
        $('#gridTemplate').tmpl(data).appendTo('table.gridTable > tbody');
    });
});

Код находится в файле csxhtml mvc3 для создания GRID.

<script id="gridTemplate" type="text/x-jquery-tmpl">
    <tr class="gridRow">
        <td class="cellTd ">
            <input type="checkbox" id="deleteCb" />
            <input type="hidden" id="Id_ + ${num}" class="idField" value="${Id}" />
        </td>
        <td class="cellTd">
            <input id="index" name="index" class="numberField" type="text" value="${IndexOrder}" />
        </td>
        <td class="cellTd">${DisplayName}</td>
        <td class="cellTd ">${UrlName}</td>
        <td class="cellTd ">
            <input type="checkbox" id="activeCb" {{if Active}} checked{{/if}} />
        </td>
    </tr>

</script>
<table class="gridTable" cellspacing="0" cellpadding="0">
    <thead>
        <tr class="gridTitleRow">
            <td class="iconLink width36">Delete</td>
            <td class="iconLink width60">Sort Order</td>
            <td class="iconLink widthAuto">Display Name</td>
            <td class="iconLink widthAuto">Url Name</td>
            <td class="iconLink widthAuto">Active</td>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>

Ответы [ 2 ]

3 голосов
/ 21 августа 2011

GET-запросы могут кэшироваться некоторыми браузерами. Попробуйте отключить кэш и вместо $.getJSON использовать $.ajax и установить параметр cache: false:

$.ajax({
    url: '/HeaderMenu/GetHeaderGrid', // TODO: never hardcode urls like this use Url helpers
    type: 'GET',
    cache: false,
    success: function(data) {
        // same as before
    }
});
1 голос
/ 10 апреля 2012

Вы можете использовать это:

$.ajax({
    url: '/HeaderMenu/GetHeaderGrid', // TODO: never hardcode urls like this use Url helpers
    type: 'GET',
    cache: false,
    success: function(data) {
        // same as before
    }
});
...