2010-04-22 22 views
5

Tengo una lista desplegable con los valores numéricos:¿Encuentra el valor máximo en una lista desplegable usando 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> 

Tengo que encontrar el valor numérico más alto dentro de esta lista. (En este caso, es 60.)

Estaba pensando en hacer un bucle con .each, pero ¿hay un camino más corto?

+0

Este es el tipo de cosa que es bueno para Underscore.js. Creo que con Underscore sería algo como '_ ($ ('# theSelect option'). Get()). Chain(). Pluck ('value'). Max(). Value()' – Pointy

+0

@pointy could usted explica lo que está haciendo, y ¿por qué no publicó eso como respuesta? – mcgrailm

+0

Consulte Underscore (http://documentcloud.github.com/underscore/) - es una biblioteca que proporciona algunas utilidades de programación funcional. No publiqué una respuesta porque no creo que "usar esta otra biblioteca" sea realmente útil. Ese ejemplo de código prepara una envoltura de Subrayado, luego saca el atributo "valor" de los elementos en una matriz, y luego encuentra el máximo. – Pointy

Respuesta

7

Algo como esto debería funcionar:

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

[Ejemplo en JSFiddle] (http://jsfiddle.net/tbuKU/) – user2428118

14

Esto funciona muy bien para mí, bastante sencillo:

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

edición: malinterpretado la pregunta, pero podría llegar a ser útil para otros, en la mayoría de los casos tiene las opciones en el elemento seleccionado ordenar desc o asc.

0

Esto funcionaría .. !!

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

¡No solo publique el código! Agregue una explicación también para el beneficio de futuros lectores. –

Cuestiones relacionadas