2014-07-18 58 views
4

我有一個顯示列表語言的選擇列表。html選擇列表 - 通過傳遞變量獲取文本值?

<select name="language_code" id="id_language_code"> 
    <option value="ar">Arabic - العربية</option> 
    <option value="bg">Bulgarian - Български</option> 
    <option value="zh-CN">Chinese (Simplified) - 中文 (簡體)‎</option> 
    <option value="en" selected="selected">English (US)</option> 
    <option value="fr-CA">French (Canada) - français (Canada)‎</option> 
</select> 

我可以使用[從上面的選擇列表返回英語(美國)]下面的代碼來獲取選擇值的文本值:

$('#id_language_code option:selected').text() 

我怎樣才能得到當選擇的值仍然是英語(美國)時,如果我將'bg'的選項值作爲變量傳遞給文本值?

這意味着當所選值仍然是「英語(美國)」時,返回的值將是「保加利亞語 - Български」。

我已經搜索了谷歌和SO的答案,但無法找到一個,所以我想這不像我第一次想到的那樣容易!

回答

4

這裏是你如何使用CSS選擇器來查詢value屬性的例子:

function getOptionTextByValue(value) { 
    return $('#id_language_code option[value=' + value + ']').text(); 
} 

var bgText = getOptionTextByValue('bg'); 

這裏是一個工作示例 http://plnkr.co/edit/SQ48SmoQkSUgDpQ5BNAx?p=preview

+0

感謝您的回覆!下面的工作方式 - $('#id_language_code option [value ='+ value +']')。text() – user1261774

1

你有一些數據,你有觀這個數據(html/dom),但最好是如果你去數據 - >查看,而不是查看 - >數據。

例如,假設你有這樣的數組:「是什麼的縮寫‘BG’文本」

var languages = [ 
    {short: "ar", text: "Arabic - العربية"}, 
    {short: "bg", text: "Bulgarian - Български"}, 
    {short: "en", value: "English (US)"} 
]; 

現在你可以看東西,例如,

languages.filter(function(x){ return x.short === 'bg' })[0].text; 

或者從它創建DOM節點:

function option(x){ 
    var el = document.createElement('option'); 
    el.value = x.short; el.textContent = el.text; 
    return el; 
} 

function select(options){ 
    var el = document.createElement('select'); 
    options.forEach(function(x){ el.appendChild(x); }); 
    return el; 
} 

var element = select(languages.map(option)); 
element.id = 'id_language_code'; 
0

嗯,如果我理解正確的話,要檢索與該<select>元素的選項之一的給定值,相關的標籤,該標籤不一定是當前選擇的選項。使用純JavaScript的方法(也就是沒有jQuery的,因爲有已經由其他人提供一個很好的一個。):

function getOptionLabel(selectId, optionValue){ 
    // Get select element and all options 
    var sel = document.getElementById(selectId); 
    var selOpts = sel.options; 

    // Cycle through each option to compare its value to the desired one 
    for(var i = 0; i < selOpts.length; i++){ 
     if (selOpts[i].value == optionValue){ 
      return selOpts[i].label; 
     } 
    } 

    // Default return value 
    return "Option not found."; 
} 

爲了從給定id的<select>保加利亞選項,你可以把它像這樣:

getSelectLabel("id_language_code", "bg"); 

這裏是一個JSFiddle來演示。希望這可以幫助!如果您有任何問題,請告訴我。