valor texto seleccionar obtener multiple dropdownlist javascript selectedindex

javascript - texto - selected option jquery



¿Cómo establecer selectedIndex del elemento seleccionado usando el texto de visualización? (7)

¿Cómo establecer selectedIndex del elemento seleccionado usando el texto de la pantalla como referencia?

Ejemplo:

<input id="AnimalToFind" type="text" /> <select id="Animals"> <option value="0">Chicken</option> <option value="1">Crocodile</option> <option value="2">Monkey</option> </select> <input type="button" onclick="SelectAnimal()" /> <script type="text/javascript"> function SelectAnimal() { //Set selected option of Animals based on AnimalToFind value... } </script>

¿Hay alguna otra manera de hacer esto sin un bucle? Ya sabes, estoy pensando en un código JavaScript incorporado o algo así. Además, no uso jQuery ...


Agregue el atributo de nombre a su opción:

<option value="0" name="Chicken">Chicken</option>

Con eso puede usar el valor HTMLOptionsCollection.namedItem ("Chicken"). Para establecer el valor de su elemento de selección.


Prueba esto:

function SelectAnimal() { var animals = document.getElementById(''Animals''); var animalsToFind = document.getElementById(''AnimalToFind''); // get the options length var len = animals.options.length; for(i = 0; i < len; i++) { // check the current option''s text if it''s the same with the input box if (animals.options[i].innerHTML == animalsToFind.value) { animals.selectedIndex = i; break; } } }


Prueba esto:

function SelectAnimal() { var sel = document.getElementById(''Animals''); var val = document.getElementById(''AnimalToFind'').value; for(var i = 0, j = sel.options.length; i < j; ++i) { if(sel.options[i].innerHTML === val) { sel.selectedIndex = i; break; } } }


Puede establecer el índice con este código:

sel.selectedIndex = 0;

pero recuerde una advertencia en esta práctica, no podrá llamar al método onclick del servidor si selecciona el valor anterior seleccionado en el menú desplegable.


Puede usar HTMLOptionsCollection.namedItem () Esto significa que debe definir sus opciones de selección para tener un atributo de nombre y tener el valor del texto que se muestra. por ejemplo, California


Si quiere esto sin bucles o jquery, podría usar lo siguiente. Esto es directamente en JavaScript. Esto funciona para los navegadores web actuales. Dada la edad de la pregunta, no estoy seguro de si esto hubiera funcionado en 2011. Tenga en cuenta que el uso de selectores de estilo CSS es extremadamente potente y puede ayudar a acortar una gran cantidad de código.

// Please note that querySelectorAll will return a match for // for the term...if there is more than one then you will // have to loop through the returned object var selectAnimal = function() { var animals = document.getElementById(''animal''); if (animals) { var x = animals.querySelectorAll(''option[value="frog"]''); if (x.length === 1) { console.log(x[0].index); animals.selectedIndex = x[0].index; } } }

<html> <head> <title>Test without loop or jquery</title> </head> <body> <label>Animal to select <select id=''animal''> <option value=''nothing''></option> <option value=''dog''>dog</option> <option value=''cat''>cat</option> <option value=''mouse''>mouse</option> <option value=''rat''>rat</option> <option value=''frog''>frog</option> <option value=''horse''>horse</option> </select> </label> <button onclick="selectAnimal()">Click to select animal</button> </body> </html>

document.getElementById (''Animal''). querySelectorAll (''option [value = "searchterm"]''); en el objeto de índice ahora puede hacer lo siguiente: x [0] .index


<script type="text/javascript"> function SelectAnimal(){ //Set selected option of Animals based on AnimalToFind value... var animalTofind = document.getElementById(''AnimalToFind''); var selection = document.getElementById(''Animals''); // select element for(var i=0;i<selection.options.length;i++){ if (selection.options[i].innerHTML == animalTofind.value) { selection.selectedIndex = i; break; } } } </script>

establecer la propiedad selectedIndex de la etiqueta de selección elegirá el elemento correcto. es una buena idea de que, en lugar de comparar los dos valores (opciones innerHTML y& animal value), puede usar el método indexOf () o la expresión regular para seleccionar la opción correcta a pesar de que la cubierta o la presencia de espacios

selection.options[i].innerHTML.indexOf(animalTofind.value) != -1;

o usando .match(/regular expression/)