I have the following code to sort the items in a dropdown list:
function sortDropDownListByText(selectId) {
$(selectId).html($(selectId + " option").sort(function(a, b) {
return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
}))
}
this works fine except in cases where, in my first item, i have a **"Please select and item from the list" message . . **
is there anyway i can sort the items in the select list and keep the "Please select entry" as the first item in the list always?
In response to some of the answers, the "Please select item always has a value of 0"
So you could use $("select"). prop("selectedIndex",0); for a quick way to select the first option on all dropdowns.
sort() The sort() method sorts the elements of an array in place and returns the reference to the same array, now sorted. The default sort order is ascending, built upon converting the elements into strings, then comparing their sequences of UTF-16 code units values.
We can extract all the options in a dropdown in Selenium with the help of Select class which has the getOptions() method. This retrieves all the options on a Select tag and returns a list of web elements. This method does not accept any arguments.
function sortDropDownListByText(selectId) {
var foption = $('#'+ selectId + ' option:first');
var soptions = $('#'+ selectId + ' option:not(:first)').sort(function(a, b) {
return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
});
$('#' + selectId).html(soptions).prepend(foption);
};
is your function.
Theoretically, I would approach the problem by removing the "Please select" entry, sorting the list, then append it again, once the sorting is done
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With