javascript - ejemplo - remove attribute jquery
jQuery: configuración del valor seleccionado de un control de selección a través de su descripción de texto (19)
Tengo un control de selección y en una variable javascript tengo una cadena de texto.
Utilizando jQuery, quiero configurar el elemento seleccionado del control de selección para que sea el elemento con la descripción de texto que tengo (a diferencia del valor que no tengo).
Sé que configurarlo por valor es bastante trivial. p.ej
$("#my-select").val(myVal);
Pero estoy un poco perplejo al hacerlo a través de la descripción del texto. Supongo que debe haber una manera de sacar el valor de la descripción del texto, pero mi cerebro es demasiado viernes por la tarde para poder resolverlo.
Aquí es muy sencillo. por favor usarlo
$("#free").val("y").change();
Aquí es una opción fácil. Simplemente configure su opción de lista y luego configure su texto como valor seleccionado:
$("#ddlScheduleFrequency option").selected(text("Select One..."));
Dado este HTML:
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
Seleccione por descripción para jQuery v1.6 +:
var text1 = ''Two'';
$("select option").filter(function() {
//may want to use $.trim in here
return $(this).text() == text1;
}).prop(''selected'', true);
Seleccione por descripción para las versiones de jQuery inferiores a 1.6 y superiores o iguales a 1.4 : https://.com/a/3644500/31532
var text1 = ''Two'';
$("select option").filter(function() {
//may want to use $.trim in here
return $(this).text() == text1;
}).attr(''selected'', true);
Tenga en cuenta que si bien este enfoque funcionará en versiones superiores a 1.6 pero inferiores a 1.9, ha quedado en desuso desde 1.6. No funcionará en jQuery 1.9+.
Seleccione por descripción para versiones anteriores:
val()
debe manejar ambos casos. ¿No lo estás viendo?
P.ej:
$(''select'').val(''1''); // selects "Two"
$(''select'').val(''Two''); // also selects "Two"
Descubrí que al usar attr
terminarías con varias opciones seleccionadas cuando no querías, la solución es usar prop
:
$("#myDropDown option:text=" + myText +"").prop("selected", "selected");
Echa un vistazo al complemento jquery selectedbox.
selectOptions(value[, clear]):
Seleccione las opciones por valor, utilizando una cadena como parámetro $("#myselect2").selectOptions("Value 1");
, o una expresión regular $("#myselect2").selectOptions(/^val/i);
.
También puede borrar las opciones ya seleccionadas: $("#myselect2").selectOptions("Value 2", true);
Esta línea funcionó:
$("#myDropDown option:contains(myText)").attr(''selected'', true);
Esta respuesta aceptada no parece correcta, mientras que .val (''newValue'') es correcto para la función, tratar de recuperar una selección por su nombre no me funciona, tuve que usar la ID y el nombre de clase para obtener mi elemento
Intenta esto ... para seleccionar la opción con el texto myText
$("#my-Select option[text=" + myText +"]").attr("selected","selected");
La forma más fácil con 1.7+ es:
$("#myDropDown option:text=" + myText +"").attr("selected", "selected");
1.9+
$("#myDropDown option:text=" + myText +"").prop("selected", "selected");
Probado y funciona.
Lo hago de esta manera (jQuery 1.9.1)
$("#my-select").val("Dutch").change();
Nota: no olvides el cambio (), tuve que buscar demasiado por eso :)
No he probado esto, pero esto podría funcionar para usted.
$("select#my-select option")
.each(function() { this.selected = (this.text == myVal); });
Obtener los hijos del cuadro de selección; recorrerlos cuando haya encontrado el que desea, configúrelo como la opción seleccionada; devuelve falso para detener el bucle.
Para evitar todas las complicaciones de la versión jQuery, honestamente recomiendo usar una de estas funciones javascript realmente simples ...
function setSelectByValue(eID,val)
{ //Loop through sequentially//
var ele=document.getElementById(eID);
for(var ii=0; ii<ele.length; ii++)
if(ele.options[ii].value==val) { //Found!
ele.options[ii].selected=true;
return true;
}
return false;
}
function setSelectByText(eID,text)
{ //Loop through sequentially//
var ele=document.getElementById(eID);
for(var ii=0; ii<ele.length; ii++)
if(ele.options[ii].text==text) { //Found!
ele.options[ii].selected=true;
return true;
}
return false;
}
Sé que este es un post antiguo, pero no pude seleccionarlo por texto usando jQuery 1.10.3 y las soluciones anteriores. Terminé usando el siguiente código (variación de la solución de Spoulson):
var textToSelect = "Hello World";
$("#myDropDown option").each(function (a, b) {
if ($(this).html() == textToSelect ) $(this).attr("selected", "selected");
});
Espero que ayude a alguien.
Sólo en una nota al margen. Mi valor seleccionado no se estaba configurando. Y he buscado por toda la red. En realidad, tuve que seleccionar un valor después de una llamada de un servicio web, porque estaba obteniendo datos de él.
$("#SelectMonth option[value=" + DataFromWebService + "]").attr(''selected'', ''selected'');
$("#SelectMonth").selectmenu(''refresh'', true);
Así que la actualización del selector fue lo único que faltaba.
Tuve un problema con los ejemplos anteriores, y el problema se debió al hecho de que los valores de mis cuadros de selección están precargados con cadenas de longitud fija de 6 caracteres, pero el parámetro que se pasa no era una longitud fija.
Tengo una función rpad que rellena una cadena a la derecha, a la longitud especificada, y con el carácter especificado. Entonces, después de rellenar el parámetro funciona.
$(''#wsWorkCenter'').val(rpad(wsWorkCenter, 6, '' ''));
function rpad(pStr, pLen, pPadStr) {
if (pPadStr == '''') {pPadStr == '' ''};
while (pStr.length < pLen)
pStr = pStr + pPadStr;
return pStr;
}
$("#Test").find("option:contains(''two'')").each(function(){
if( $(this).text() == ''two'' ) {
$(this).attr("selected","selected");
}
});
La instrucción if hace una coincidencia exacta con "dos" y "dos tres" no coincidirá
$(''#theYear'').on(''change'', function () {
FY = $(this).find(''option:selected'').text();
$(''#theFolders'').each(function () {
$(''option:not(:contains('' + FY + ''))'', this).hide();
});
$(''#theFolders'').val(0);
});
$(''#theYear'').on(''mousedown'', function () {
$(''#theFolders option'').show().find(''option:contains("Select")'', this).attr(''selected'', ''selected'');
});
$("#myselect option:contains(''YourTextHere'')").val();
devolverá el valor de la primera opción que contiene su descripción de texto. Probado esto y funciona.