2014-07-18 53 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来演示。希望这可以帮助!如果您有任何问题,请告诉我。