флажок не может сохранить свое состояние после применения сортировщика таблиц

98
13

У меня есть флажок в таблице html. Используя knockoutjs, я привязываю мою таблицу html к объекту json. До сих пор все работает нормально. Но когда я применяю tableorter, флажок, который ранее был проверен, не проверяется. Это происходит после вызова функции Buildtable() из приведенного ниже кода. Браузер, который я использую, - IE6. Не уверен, что проблема с броузером. Не иметь доступ к другому браузеру в настоящее время. Любая помощь будет оценена по достоинству.

благодаря

    <div id="unassignedDiv" style="text-align:center;display:none;">
<table class="tablesorter" id="unassignedTable">
<thead><tr>
<th align="center">Date</th>
<th align="center">Rush?</th>
</thead></tr>
<tbody id="resultsbody" data-bind="template: { name: 'resultsTemplate', foreach: Results }"></tbody></table>

<script id="resultsTemplate" type="text/html">
<tr><td data-bind="text: dateneeded" align="center"></td>
<td align="center">
<input type="checkbox" data-bind="checked:rushindicator" disabled="disabled" />
</td>
</tr>
</script>
</div>

//Build JsonObject
BuildArray = function () {
var searchjson = {
"Results": [
{ "dateneeded": "11/08/12", rushindicator: true },
{ "dateneeded": "11/10/12", rushindicator: false }]};
};

BuildResultsPage = function () {
$j('#unassignedDiv').show();
var resultArray = BuildArray();
exported.viewmodelExpanded = ko.mapping.fromJS(resultArray);
ko.applyBindings(exported.viewmodelExpanded, $j('#unassignedDiv')[0]);
BuildTable(); //If this is commented, html loads checkbox with checked.
};

BuildTable = function () {
$j("#unassignedTable").tablesorter({ widgets: ['zebra'], widgetZebra: { css: ["oddcolor", "evencolor"] },
sortInitialOrder: 'desc',
headers:
{
0: { sorter: 'Date' },
1: { sorter: false }
}
}).tablesorterPager({ container: $j("#pager"), removeRows: true });
};

спросил(а) 2021-01-19T16:04:32+03:00 2 месяца, 3 недели назад
1
Решение
97

Если вы используете оригинальный tablesorter, попробуйте код из этого ответа. *

Если вы используете мою вилку tablesorter, используйте этот синтаксический анализатор (demo):

$.tablesorter.addParser({
id: 'checkbox',
is: function(s) {
return false;
},
format: function(s, table, cell, cellIndex) {
var $t = $(table), $c = $(cell), c,

// resort the table after the checkbox status has changed
resort = false;

if (!$t.hasClass('hasCheckbox')) {
$t
.addClass('hasCheckbox')
// make checkbox in header set all others
.find('thead th:eq(' + cellIndex + ') input[type=checkbox]')
.bind('change', function(){
c = this.checked;
$t.find('tbody tr td:nth-child(' + (cellIndex + 1) + ') input').each(function(){
this.checked = c;
$(this).trigger('change');
});
})
.bind('mouseup', function(){
return false;
});
$t.find('tbody tr').each(function(){
$(this).find('td:eq(' + cellIndex + ')').find('input[type=checkbox]').bind('change', function(){
$t.trigger('updateCell', [$(this).closest('td')[0], resort]);
});
});
}
// return 1 for true, 2 for false, so true sorts before false
c = ($c.find('input[type=checkbox]')[0].checked) ? 1 : 2;
$c.closest('tr')[ c === 1 ? 'addClass' : 'removeClass' ]('checked');
return c;
},
type: 'numeric'
});

$(function() {
$('table').tablesorter({
headers: {
0: { sorter: 'checkbox' }
}
});
});​

    Причина, по которой этот анализатор не будет работать с исходным плагином, зависит от параметров функции формата - cellIndex недоступен.

ответил(а) 2021-01-19T16:04:32+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема