2010-04-22 12 views
5

Mam listę rozwijaną z wartościami liczbowymi:Znajdź maksymalną wartość na liście rozwijanej przy użyciu jQuery?

<select name="a"> 
    <option value="1">asdsadas</option> 
    <option value="1">wqecsdc</option> 
    <option value="10">nmnmbn</option> 
    <option value="16">assadsa</option> 
    <option value="12">uuyuyuy</option> 
    <option value="60">xzXz</option> 
    <option value="55">vbbnbnm</option> 
    <option value="13">eerrt</option> 
</select> 

Muszę znaleźć największą wartość liczbową w tej liście. (W tym przypadku jest to 60.)

Myślałem o zapętleniu za pomocą .each, ale czy istnieje krótsza droga?

+0

Jest to rodzaj rzeczy, które underscore.js jest dobre dla. Myślę, że z Underscore byłoby coś takiego jak '_ ($ ('# opcjaSelect'). Get()). Chain(). Pluck (" wartość "). Max(). Wartość()' – Pointy

+0

@pointy could wyjaśnisz, co to robi, i dlaczego nie napisałeś tego jako odpowiedzi? – mcgrailm

+0

Sprawdź Podkreślenie (http://documentcloud.github.com/underscore/) - jest to biblioteka udostępniająca niektóre narzędzia do programowania funkcjonalnego. Nie wysłałem odpowiedzi, ponieważ nie uważam, że "korzystam z tej innej biblioteki" jest naprawdę bezpośrednio pomocna. Ten przykład kodu przygotowuje opakowanie typu "wynik", a następnie wyciąga atrybut "value" z elementów do tablicy, a następnie znajduje maksymalny. – Pointy

Odpowiedz

7

Coś jak to powinno działać:

function findMaxValue(element) { 
    var maxValue = undefined; 
    $('option', element).each(function() { 
     var val = $(this).attr('value'); 
     val = parseInt(val, 10); 
     if (maxValue === undefined || maxValue < val) { 
      maxValue = val; 
     } 
    }); 
    return maxValue; 
} 

alert(findMaxValue($('select[name=a]'))); 
-1
var maxValue = undefined; 
$('option', element).each(function() { 
    var val = $(this).val(); 
    val = parseInt(val, 10); 
    if(!isNaN(val)) { 
    if (maxValue === undefined || maxValue < val) { 
     maxValue = val; 
    } 
    } 
}); 
return maxValue; 
+0

[Przykład na JSFiddle] (http://jsfiddle.net/tbuKU/) – user2428118

14

Działa to dobrze dla mnie, dość prosta:

$('select option:last').val() 

edit: źle zrozumiał pytanie, ale może stać się przydatne dla innych, w w większości przypadków masz opcje w wybranym elemencie uporządkowanym, desc lub asc.

0

To działałoby .. !!

var temp=0; 

var currentValue, maxValue; 

$('select option').each(function(){ 

currentValue = $(this).val(); 

maxValue = Math.max(temp, currentValue); 

temp=currentValue; 

}); 

console.log(maxValue); 
0

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select name="aktivite_type" id="aktivite_type"> 
 
    <option value="1">A</option> 
 
    <option value="6">B</option> 
 
    <option value="10">C</option> 
 
    <option value="11">D</option> 
 
    <option value="8">E</option> 
 
    <option value="9">F</option> 
 
    <option value="7">F</option> 
 
</select> 
 

 
<button onclick="JSF__selectLastTypeValue()">Select Value</button> 
 

 
<script> 
 

 
function JSF__selectLastTypeValue() 
 
    { 
 
    var temp=0; 
 
    var currentValue, maxValue; 
 
    $('#aktivite_type option').each(function(i,v) 
 
     { 
 
     currentValue = v.value; 
 
     maxValue = Math.max(temp, currentValue); 
 
     temp=maxValue; 
 
     }); 
 
    $("#aktivite_type").val(maxValue); 
 
    } 
 
    
 
    </script>

+3

Proszę nie kłaść kodu! Dodaj również wyjaśnienie, z korzyścią dla przyszłych czytelników. –

Powiązane problemy