2012-04-10 4 views
1

나는 메뉴가 있습니다. 주어진 가치가 주어지면 나는 그 텍스트를 돌려주고 싶다. 예를 들어 0은 "0"을 반환하고 1은 "하나"를 반환합니다. 현재 어떤 옵션이 선택되어 있는지 신경 쓰지 않고 메뉴를 자동 선택하고 싶지만 select 메뉴를 원시 데이터베이스. 각 옵션을 반복하지 않고도 JavaScript 또는 jQuery로 쉽게이 작업을 수행 할 수 있습니까?값을 기준으로 선택 옵션 텍스트 받기

<select> 
<option value="0">zero</option> 
<option value="1">one</option> 
<option value="2">two</option> 
<option value="3">three</option> 
</select> 

감사

+0

사용 "선택"선택 (HTTP : // API. jquery.com/selected-selector/) – ckaufman

+0

http://jsfiddle.net/ckaufman/aDU5E/ – ckaufman

답변

5

을 대신의를 사용하여 select 데이터베이스로 (간단한 조회를 위해 값 비싼 작업이 필요함), 한 번 데이터 세트를 만든 다음 사용하십시오.

var vals = $('select option').map(function(i, el) { return el.text; }) 
          .toArray(); 
alert(vals[2]); // "two" 

또는 option 값이 0 기반 인덱스를 순차적하지 않는 경우, 다음 개체를 사용 ...

var vals = {}; 

$('select option').each(function(i, el) { vals[el.value] = el.text }); 

alert(vals[2]); // "two" 
+0

나는 비슷한 접근법을 계획하고있었습니다. 처음으로 데이터가 필요할 때 변수를 생성하십시오. – user1032531

+0

+1. 비록 내가 10 또는 심지어 100 옵션을 iterating 생각하지 않아도 우리 시대에 비싼 작업입니다. 그것은 단지 시간 가치가 없어. 내가 맞습니까? – gdoron

+0

@ gdoron : 네 말이 맞아. 나는 DOM 선택이 가치를 저장하고 가져 오는 데 불필요하게 비싼 방법이라고 생각했다. –

0

를 사용하여 속성 - 동일 선택 :

var valToSearchFor = 0; 
    textFromOption = $('select option[value="' + valToSearchFor + '"]').text(); 

이 아직도 당신이 찾고있는 값의 존재를 테스트하기 위해 모든 option을 반복하지만, 그것은 것입니다 당신이 할 필요가 없도록 '장면 뒤에서'그렇게하십시오.

querySelectorAll()를 사용할 수있는 가능성이 (jQuery를 위 등 더 많거나 적은 같은 표기법 불구하고)있다는 :

var valToSearchFor = 0; 
    textFromOption = document.querySelectorAll('option[value="' + valToSearchFor + '"]').innerHTML; 

이, 물론, 브라우저가 모든 할 (IE를 querySelectorAll() 구현, 그리고해야 특별히).

참고 :

+0

데모에서 요소의 값을 '4'로 설정 한 다음 값이 인 요소의 텍스트를 검색하려고합니다. '3'과 같습니다. 존재하지 않는. 존재하는 값을 가진 요소를 찾기 위해 데모를 수정하면 [http://jsfiddle.net/davidThomas/Meewa/2/] 작동합니다. –

+0

... 나는 바보 야. 감사. –

+1

걱정하지 마라. 나는 다소 오래 창피하게 생각한다. = D –

3
var value = '3'; 
alert($('select option[value=' + value + ']').text()); 

Live demo. 당신이있는 경우에 다수의 드롭 다운 선택기가 작동하지 않습니다 나열하기 때문에

은 또한 당신은 선택을 ID를 선택을 제공하고 업데이트 할 수 있습니다

alert($('#id_of_the_select option[value=' + value + ']').text()); 
+0

아니, 그냥 잘 작동한다. – FreeCandies

+0

OP가 현재 선택된 값에 관심이 있는지 모르겠다. 그는 주어진 텍스트를 얻고 싶어합니다. 아니면 내가 그 질문을 오해했을 수도 있습니다. –

+0

다른 옵션을 선택하면 텍스트가 반환되지 않습니다. – ckaufman

0

selected: 선택기를 사용합니다. 페이지에 오른쪽에 주어진 예제.

http://api.jquery.com/selected-selector/

$("select").change(function() { 
     var str = ""; 
     $("select option:selected").each(function() { 
      str += $(this).text() + " "; 
      }); 
     $("div").text(str); 
    }) 
    .trigger('change'); 

당신이 각 옵션을 반복하지 않고 값을 검색 할 어떻게 다른

http://jsfiddle.net/ckaufman/aDU5E/1/

+0

이것은 선택한 옵션을 얻는 데 사용됩니다. – user1032531

+0

Option 메뉴로 예제를 업데이트하여 실제로보실 수 있습니다. http://jsfiddle.net/ckufman/aDU5E/1/ – ckaufman

1

트리거하려고하는 이벤트와 "DIV"를 대체? 당신을 위해 그것을하는 마법 재산은 없습니다.

그러나이 코드를 사용할 수 있습니다

(function() { 
    var sels = document.getElementsByTagName('select'), l = sels.length, i, 
     opts, m, j, o; 
    for(i=0; i<l; i++) { 
     o = {}; 
     opts = sels[i].options; 
     m = opts.length; 
     for(j=0; j<m; j++) o[opts[j].value] = opts[j].text; 
     sels[i].map = o; 
    } 
})(); 

에 담기 직전 </body>을, 지금 당신은 당신의 페이지에있는 모든 <select>의지도를 찾을 수 있습니다

var sel = document.getElementById('mySelect'); 
alert(sel['0']); 
+0

btw, 이것은 어떤 jQuery 솔루션보다 수백 배 더 효율적입니다. 그냥 알 수 있습니다.) –

+0

그래, 더 효율적입니다. 아마도 지금 jQuery 솔루션을 계속 사용하고 나중에 프로토 타이핑 및 프로덕션 사용으로 넘어 가면 모든 것을 변경할 수 있습니다. – user1032531

관련 문제