SO - 17562100

by Arun P Johny

HTML

<select multiple>
	<option>9 EE</option>
	<option>9 1/2 EE</option>
	<option>10 EE</option>
	<option>10 1/2 EE</option>
	<option>11 EE</option>
	<option>11 1/2 EE</option>
	<option>9 EEEE</option>
	<option>9 1/2 D</option>
	<option>9 1/2 EEEE</option>
	<option>10 EEEE</option>
	<option>10 1/2 EEEE</option>
	<option>11 EEEE</option>
	<option>9 D</option>
	<option>11 1/2 EEEE</option>
	<option>10</option>
</select>

CSS

select {
    height:600px;
}

JavaScript

$("select").html($("option").sort(function (a, b) {
    return nomalize(a.text) < nomalize(b.text) ? -1 : 1;
}));

function nomalize(val){
    var parts =  val.split(' '), op = '';
    
    op = parts[0].length == 1 ? '0' + parts[0] : parts[0];
    if(parts.length > 1){
        if(/[a-z]/i.test(parts[1])){
            op += '0/0' + parts[1];
        } else {
            op += parts[1]
        }
    }
    
    op += parts.length > 2 ? parts[2] : '';
    return op;
}