2011-12-19 3 views
3

Я хочу разрешить пользователю вводить текстовое поле и искать его в выпадающем меню и выбирать его. Однако у меня есть объект, а не его имя.Как выбрать опцию из раскрывающегося списка с точным текстом

В настоящее время Прессинг ввести в текстовое поле будет работать следующий код

$(this).prev().find('option:contains(\'editboxValue\')').attr('selected', 'selected'); 

но выше код только выбирает Text2. следующий код работает отлично, но выглядит беспорядочно!

$(this).prev().find("option").each(function(){ if ($(this).text() == 'editboxValue') $(this).attr("selected","selected");}); 

есть ли лучший способ написать его?

<select> 
    <option>Text</option> 
    <option>Text1</option> 
    <option>Text2</option> 
</select> 
<input type="text"> 
+0

Ваш 'each' цикл никогда не будет выбрать элемент. '' + $ (this) .val() + ''берется буквально. Вы можете использовать 'filter': http://api.jquery.com/filter/ –

+0

@Felix: Спасибо, что выделили ошибку. Я взял строку из части события, прикрепленного к выбору. Я отредактировал код, чтобы показать, что я имел в виду. – AaA

ответ

0

укажите свой идентификатор или класс и укажите свои параметры, равный вашему тексту. Легко сделать, если вы создаете параметры. Al вы должны сделать, чем это:

var myId = 'GetTheIdYouNeed' 
$('.mySelect').find(myId); 
+1

Это будет поиск элемента с ** именем тега ** 'GetTheIdYouNeed'. –

+0

Это не тот случай, у меня может быть несколько выборок на странице, и после каждого из них есть текстовое поле. Событие прикрепляется к каждому текстовому поле во время выполнения, поэтому сценарии неизвестны – AaA

3

выбрать опцию с помощью DropDownList текст элемента, используйте этот

var findText = $('#textBoxId').val(); 
$('#dropDownList option'). 
    filter(function() {return ($(this).text() == findText); })). 
    attr('selected', 'selected'); 
Смежные вопросы