btf
btf

Reputation: 173

Programmatically set the text of a select - jquery

I need to programmatically set an option of an existing select box when I only know the text of the option and not the value.

Here is my code:

$("#" + eventQuestions[x].code).find('option[text="' + eventAnswers[x].vAnswerString + '"]').attr("selected");

Don't focus too much on selecting the right html element or the right text being inside the vAnswerString - I can confirm those are correct.

Basically the option is not being selected. What is wrong with my code?

Upvotes: 0

Views: 3243

Answers (2)

Brino
Brino

Reputation: 2502

Here is a working example for jquery 1.6+.

Select the option using the filter function:

var text = "theTextToFind";
var matchingOption = $("select#myselect option").filter(function () {
        return $(this).text() == text;
    });

Set the value using the property function:

matchingOption.prop('selected', true);

Also check out this Answer.

Upvotes: 1

Roberto Soares
Roberto Soares

Reputation: 264

Check out this answer.

You can use that filter to check the inner text and then you put the selected attribute like this:

.attr("selected", true);

Example I tested it with:

$(function() {
    $("#select").find("option").filter(function() {
        return this.innerHTML == "InnerText";
    }).attr("selected", true);
})

Upvotes: 2

Related Questions