2009-12-11 20 views
77

Ho un menu a discesa come:impostare il valore di discesa dal testo utilizzando jQuery

<select id="HowYouKnow" > 
    <option value="1">FRIEND</option> 
    <option value="2">GOOGLE</option> 
    <option value="3">AGENT</option></select> 

Nel menu a discesa sopra so che il testo della discesa. Come si può impostare il valore del menu a discesa in document.ready con il testo usando jquery?

risposta

192

Questo è un metodo che funziona basato sul testo dell'opzione, non sull'indice. Appena testato

var theText = "GOOGLE"; 
$("#HowYouKnow option:contains(" + theText + ")").attr('selected', 'selected'); 

Oppure, se ci sono valori simili (grazie shanabus):

$("#HowYouKnow option").each(function() { 
    if($(this).text() == theText) { 
    $(this).attr('selected', 'selected');    
    }       
}); 
+6

Questo non funziona nel caso in cui la lista 'select' contenga' opzioni' con valori di testo simili, ovvero '' - pensieri su come gestirlo? – shanabus

+1

Per gestire i valori simili prolem è possibile ottenere la prima corrispondenza con l'indice [0] (il valore predefinito restituisce l'ultimo indice) in questo modo: $ ("# Opzione HowYouKnow: contains (" + theText + ")"). Attr ('selezionato', 'selezionato') [0]; – Asmussen

+4

I metodi di cui sopra sono infranti in jQuery dalla versione 1.9.1 e successive. Cambia .attr a .prop -> prova qui: http://jsfiddle.net/RB5wU/579/ –

1
$("#HowYouKnow").val("GOOGLE"); 
+0

$ (document) .ready (function() {$ ("# HowYouKnow") val ("Google");. }); Imposta anche il valore ... non so perché ho votato! – dell

+10

Forse perché funziona solo se il valore di 'option' è uguale al testo. Quindi nell'esempio dell'OP, l'opzione di testo GOOGLE ha un valore di '2', quindi non funziona. – shanabus

+0

Soluzione migliore :) – Subodh

-1
$("#HowYouKnow option:eq(XXX)").attr('selected', 'selected'); 

dove XXX è l'indice di quello che si desidera.

+0

Come posso ottenere l'indice del testo? – Prasad

+0

Vedi la mia risposta ... testata e funzionante. –

+3

la domanda viene impostata il valore di discesa per testo, non per indice. – Cheung

5
$("#HowYouKnow option[value='" + theText + "']").attr('selected', 'selected'); // added single quotes 
+2

Pensa solo a questo funziona con l'indice non il testo. –

0

Ecco un semplice esempio:

$("#country_id").change(function(){ 
    if(this.value.toString() == ""){ 
     return; 
    } 
    alert("You just changed country to: " + $("#country_id option:selected").text() + " which carried the value for country_id as: " + this.value.toString()); 
}); 
1
var myText = 'GOOGLE'; 

$('#HowYouKnow option').map(function() { 
    if ($(this).text() == myText) return this; 
}).attr('selected', 'selected'); 
10

Per l'uso corrispondenza esatta

$("#HowYouKnow option").filter(function(index) { return $(this).text() === "GOOGLE"; }).attr('selected', 'selected'); 

contiene sta per selezionare l'ultima corrispondenza che potrebbe non essere esatta.

1

per Google, GOOGLEDOWN, GOOGLEUP cioè simile tipo di valore si può provare sottostante Codice

$("#HowYouKnow option:contains('GOOGLE')").each(function() { 

         if($(this).html()=='GOOGLE'){ 
          $(this).attr('selected', 'selected'); 
         } 
        }); 

In questo modo, il numero di iterazione del ciclo può essere ridotta e lavorerà in tutte le situazioni.

1

Il seguente codice funziona per me -:

jQuery('[id^=select_] > option').each(function(){ 
     if (this.text.toLowerCase()=='text'){ 
      jQuery('[id^=select_]').val(this.value); 
     } 
}); 

jQuery ('[id^= select_]') - Questo permette di selezionare a discesa dove ID della goccia inizia giù da select_

Spero che questo aiuti!

Acclamazioni S

0

Questa è lavorato sia Chrome e Firefox

valore impostato per casella a discesa.

var given = $("#anotherbox").val(); 
$("#HowYouKnow").text(given).attr('value', given); 
0

provare questo ..

$(element).find("option:contains(" + theText+ ")").attr('selected', 'selected'); 
Problemi correlati