2016-04-14 3 views
0

Я ищу и ищу и не могу найти что-либо точно, что мне нужно.Javascript auto select from dropdown

Так что мне нужен javascript, который выберет опцию из раскрывающегося списка, но не номер параметра, а имя.

у меня есть:

<select class="aa" id="local" name="local"> 
<option value="0">Cała Polska</option> 
<option value="1">Dolnośląskie</option> 
<option value="100">• Bolesławiec</option> 
<option value="101">• Dzierżoniów</option> 
<option value="102">• Głogów</option> 
<option value="103">• Góra</option> 
<option value="104">• Jawor</option> 
<option value="105">• Jelenia Góra</option> 

Так мне нужно выбрать f.ex «Jawor» по имени, а не по идентификатору - это самое главное. Как заставить его работать?

+2

http://stackoverflow.com/questions/3989324/javascript-set-dropdown-selected-item-based-on-option-text – Goose

ответ

2

Для вас это похоже;

var options = document.getElementsByClassName("aa")[0].options, 
 
\t name ="Jawor"; 
 

 
for(i = 0; i < options.length; i++){ 
 
    if(options[i].text.indexOf(name) > -1){ 
 
    \t options[i].selected = true; 
 
     break; 
 
    } 
 
}
<select class="aa" id="local" name="local"> 
 
    <option value="0">Cała Polska</option> 
 
    <option value="1">Dolnośląskie</option> 
 
    <option value="100">• Bolesławiec</option> 
 
    <option value="101">• Dzierżoniów</option> 
 
    <option value="102">• Głogów</option> 
 
    <option value="103">• Góra</option> 
 
    <option value="104">• Jawor</option> 
 
    <option value="105">• Jelenia Góra</option> 
 
</select>

+0

'break' из петли, как только вы найдете матч, есть нет причин продолжать искать. – Barmar

+0

@ Бармар, ты прав! Изменено. –

0

Использование jquery здесь. Вы можете использовать следующую функцию:

function selectFromDropdown(selector, text) { 
    $(selector).find('option').each(function() { 
    if ($(this).text() == text) { 
     $(selector).val($(this).val()); 
    } 
    }) 
} 

Демонстрационный:

function selectFromDropdown(selector, text) { 
 
    $(selector).find('option').each(function() { 
 
    if ($(this).text() == text) { 
 
     $(selector).val($(this).val()); 
 
     return false; 
 
    } 
 
    }) 
 
} 
 

 
//use the function 
 

 
setTimeout(function() { 
 
    selectFromDropdown('#local', '• Dzierżoniów') 
 
}, 1000) 
 
setTimeout(function() { 
 
    selectFromDropdown('#local', '• Jawor') 
 
}, 4000)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select class="aa" id="local" name="local"> 
 
    <option value="">Select</option> 
 
    <option value="0">Cała Polska</option> 
 
    <option value="1">Dolnośląskie</option> 
 
    <option value="100">• Bolesławiec</option> 
 
    <option value="101">• Dzierżoniów</option> 
 
    <option value="102">• Głogów</option> 
 
    <option value="103">• Góra</option> 
 
    <option value="104">• Jawor</option> 
 
    <option value="105">• Jelenia Góra</option> 
 
</select>

+0

Здесь он работает очень хорошо, но ему нужно работать в хром-консоли .. это не –

+0

Может быть, консоль не обрабатывает специальные символы в тексте правильно. Можете ли вы сначала попробовать использовать обычные символы и посмотреть, работает ли это? – Roy

+0

Вы должны выйти из цикла '.each', когда найдете соответствующий элемент, нет необходимости продолжать поиск. Сделайте это, вернув «false». – Barmar

1

U нужно использовать OnChange обработчик событий ... например

<select onchange="showSelected()"> 

Затем напишите свой сценарий ...

<script> 

function showSelected(){ 
    var s=document.getElementById('local');   //refers to that select with all options  
    var selectText=s.options[s.selectedIndex].text // takes the one which the user will select 
    alert(selectText)        //Showing the text selected ... 
} 
</script> 

Остальная часть кода в порядке!

<select class="aa" id="local" name="local" onchange='showSelected'()> 
<option value="0">Cała Polska</option> 
<option value="1">Dolnośląskie</option> 
<option value="100">• Bolesławiec</option> 
<option value="101">• Dzierżoniów</option> 
<option value="102">• Głogów</option> 
<option value="103">• Góra</option> 
<option value="104">• Jawor</option> 
<option value="105">• Jelenia Góra</option> 
</select> 
+0

У вас есть это назад. Он не хочет показывать текст выбранной опции, он хочет изменить, какой вариант выбран на основе текста. – Barmar

+0

@Barmar Он хотел изменить выбранную опцию по тексту внутри опций, а не по значению. Я использовал alert() для отображения, иначе кто-то может удалить его и сделать то, что он хочет. –