我想弄清楚这个简单的问题。我希望用户能够输入数据,然后数据按升序自动排序到表中已提交的任何内容。我被困在自动分拣部分。这是我的JS小提琴 http://jsfiddle.net/6n4kugbp/
HTML
<input id="id_name" name="numid"/>
<input id="id_age" name="price"/>
<button id="add_btn">click</button>
<table border="1" class="mytab"></table>
Jquery的
$("#add_btn").on('click', function(e) {
e.preventDefault();
var name = $('#id_numid').val(),
age = $('#id_price').val();
$('<tr><td>'+numid+'</td><td>'+price+'</td></tr>').appendTo( $('.mytab') );
});
答案 0 :(得分:1)
如果我对你的问题没有误解,可以试试这个:
<强>更新强>
我在添加新行时更新了自动排序的代码。您可以通过配置defaultSortColIndex
值来更改默认排序顺序列。
$(function() {
var defaultSortColIndex = 0;
function sortTheTable() {
var table = $('table');
$('th')
.wrapInner('<span title="sort this column"/>')
.each(function() {
var th = $(this),
thIndex = th.index(),
inverse = false;
th.click(function() {
table.find('td').filter(function() {
return $(this).index() === thIndex;
}).sortElements(function(a, b) {
return $.text([a]) > $.text([b]) ?
inverse ? -1 : 1 :
inverse ? 1 : -1;
}, function() {
return this.parentNode;
});
inverse = !inverse;
});
});
$('th').eq(defaultSortColIndex).trigger('click');
};
$('button#add_btn').on('click', function() {
var sName = $('input#name').val();
var sAge = $('input#age').val();
if (isNaN(sAge)) {
alert('Invalid age number.');
return;
}
var sTr = '<tr>';
sTr += '<td>' + sName + '</td>';
sTr += '<td>' + sAge + '</td>';
sTr += '</tr>';
$('table').append(sTr);
sortTheTable();
});
});
&#13;
table {
width: 100%;
}
.orderable {
cursor: pointer;
color: #00f;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://rawgithub.com/padolsey/jQuery-Plugins/master/sortElements/jquery.sortElements.js"></script>
<input id="name" name="name"/>
<input id="age" name="age" />
<button id="add_btn">Add</button>
<table border="1" class="mytab">
<tr>
<th id="name" class="orderable">Name</th>
<th id="age" class="orderable">Age</th>
</tr>
</table>
&#13;
答案 1 :(得分:0)
像这样的东西
$("#add_btn").on('click', function(e) {
e.preventDefault();
var name = $('#id_numid').val(),
age = $('#id_price').val();
$('<tr><td>'+numid+'</td><td>'+price+'</td></tr>').appendTo( $('.mytab') );
sortTable($('.mytab'), "asc");
});
function sortTable(table, order) {
var asc = order === 'asc',
tbody = table.find('tbody');
tbody.find('tr').sort(function(a, b) {
if (asc) {
return $('td:first', a).text().localeCompare($('td:first', b).text());
} else {
return $('td:first', b).text().localeCompare($('td:first', a).text());
}
}).appendTo(tbody);
}
答案 2 :(得分:0)
试试这个 - 希望它有所帮助,因为据我所知,你希望按年龄按升序对表数据进行排序,然后在代码下面工作。
使用.sort()
方法。
如果您希望按名称排序 然后只需替换
data.sort(function(a, b) {
return a.age - b.age;
});
到
data.sort(function(a, b) {
if(a.name < b.name ) return -1;
if(a.name > b.name ) return 1;
return 0;
});
var data = [];
$("#add_btn").on('click', function(e) {
e.preventDefault();
var name = $('#id_name').val(),
age = $('#id_age').val();
var array = {
"name": name,
"age": age
};
data.push(array);
data.sort(function(a, b) {
return a.age - b.age;
});
$('.mytab').html('');
$.each(data, function(index, value) {
$('<tr><td>' + value.name + '</td><td>' + value.age + '</td></tr>').appendTo($('.mytab'));
});
});
table {
border-collapse: collapse;
width: 100%;
}
table,
th,
td {
border: 1px solid black;
}
th {
font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="id_name" name="name" placeholder="Enter a name here..." />
<input id="id_age" name="age" placeholder="Enter age here..." />
<button id="add_btn">Add</button>
<hr/>
<table>
<thead>
<tr>
<th>Name</th>
<th>Age</th>
</tr>
</thead>
<tbody class="mytab"></tbody>
</table>