Jquery 将数据输入表格并自动排序

Jquery 将数据输入表格并自动排序,jquery,html,sorting,html-table,Jquery,Html,Sorting,Html Table,我正在努力解决这个简单的问题。我希望用户能够输入数据,然后数据自动按升序排序到表中已经提交的数据。我被困在自动分拣部分。这是我的小提琴 HTML 点击 Jquery $("#add_btn").on('click', function(e) { e.preventDefault(); var name = $('#id_numid').val(), age = $('#id_price').val(); $('<tr><td&g

我正在努力解决这个简单的问题。我希望用户能够输入数据,然后数据自动按升序排序到表中已经提交的数据。我被困在自动分拣部分。这是我的小提琴

HTML


点击
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') );
});
$(“#添加#btn”)。在('click',函数(e)上{
e、 预防默认值();
var name=$('#id_numid').val(),
年龄=$('id#u price').val();
$(''+numid+''+price+'')。附加到($('.mytab');
});
类似这样的东西

$("#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);
}
$(“#添加#btn”)。在('click',函数(e)上{
e、 预防默认值();
var name=$('#id_numid').val(),
年龄=$('id#u price').val();
$(''+numid+''+price+'')。附加到($('.mytab');
可排序($('.mytab'),“asc”);
});
函数可排序(表、顺序){
var asc=顺序=='asc',
tbody=table.find('tbody');
tbody.find('tr').sort(函数(a,b){
如果(asc){
返回$('td:first',a.text().localeCompare($('td:first',b.text());
}否则{
返回$('td:first',b).text().localeCompare($('td:first',a).text());
}
}).附件(t正文);
}

如果我没有误解您的问题,您可以尝试以下方法:


更新:

我在追加新行时更新了自动排序代码。您可以通过配置
defaultSortColIndex
值来更改默认排序顺序列

$(函数(){
var defaultSortColIndex=0;
函数sortTheTable(){
变量表=$(“表”);
$(“th”)
.wrapInner(“”)
.each(函数({
var th=$(此),
thIndex=th.index(),
逆=假;
点击(函数(){
table.find('td').filter(函数(){
返回$(this).index()==thIndex;
}).分拣元件(功能(a、b){
返回$.text([a])>$.text([b])?
逆?-1:1:
逆?1:-1;
},函数(){
返回此.parentNode;
});
逆=!逆;
});
});
$('th').eq(defaultSortColIndex).trigger('click');
};
$('button#add_btn')。在('click',function()上{
var sName=$('input#name').val();
var sAge=$('input#age').val();
如果(伊斯南(圣人)){
警报(“无效的年龄编号”);
返回;
}
var-sTr='';
sTr+=''+sName+'';
sTr+=''+sAge+'';
sTr+='';
$('table')。追加(sTr);
sortTheTable();
});
});
表格{
宽度:100%;
}
.可订购{
光标:指针;
颜色:#00f;
}

添加
名称
年龄

试试这个-希望能有所帮助,因为据我所知,您希望按年龄按升序对表格数据进行排序,然后按下面的代码进行排序

使用
.sort()
方法

如果您希望按名称排序 那就换一个吧

  data.sort(function(a, b) {
    return a.age - b.age;
  });


添加

名称 年龄
  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;
  });