2016-10-05 63 views
1

我想按字母顺序升序排列我的选择框选项。 (从A开始,一直到Z)从数据库排序selectbox选项

我试着用另一个问题中发现的分拣机,但我似乎无法让它在我所有的选择框上工作。我试图通过使用document.getElementsByTagName()调用选择框,但似乎并没有工作。

这是我想要使用的功能:

function sortlist() { 

      var selectOptions = document.getElementsByClassName("sortList"); 
      var selectOptionsTexts = new Array(); 
      console.log(selectOptions); 

      for (i = 2; i < selectOptions.length; i++) { 
       selectOptionsTexts[i - 2] = 
         selectOptions.options[i].text.toUpperCase() + "," + 
         selectOptions.options[i].text + "," + 
         selectOptions.options[i].value + "," + 
         selectOptions.options[i].selected; 
      } 

      selectOptionsTexts.sort(); 

      for (i = 2; i < selectOptions.length; i++) { 
       var parts = selectOptionsTexts[i - 2].split(','); 

       selectOptions.options[i].text = parts[1]; 
       selectOptions.options[i].value = parts[2]; 
       if (parts[3] == "true") { 
        selectOptions.options[i].selected = true; 
       } else { 
        selectOptions.options[i].selected = false; 
       } 
      } 
     } 

在此先感谢

+0

为什么不在第一次填充时对数据进行排序 – ManiMuthuPandi

+0

通过在初始(?)时间排序我假设您的意思与@ nusje2000相同?由于他的答案更清晰,我会接受他的,但感谢您的建议,不管 –

回答

2

由于您使用laravel并让你的数据从数据库中的标题,你可以一旦从数据库中选择它,按字母顺序排序。您可以使用Laravel Query Builder作为默认的sql方法。

Laravel查询:

DB::table('your_table')->orderBy('col_name', 'asc'); //asc = ascending, desc = descending 

SQL查询:

SELECT * FROM your_table ORDER BY column_name ASC //ASC = ascending, DESC = descending 

有关laravel查询生成器,你可以在参观laravel文档更多的东西:https://laravel.com/docs/5.3/queries

我希望这能解决您的问题。

+1

这个伎俩。感谢你及时的答复 –