使用所选选项发送隐藏值

时间:2015-02-10 20:04:30

标签: javascript html forms select

我有一个下拉选择表单,如下所示:

<select id="selection">
    <option>try 1</option>
    <option>try 2</option>
    <option>try 3</option>
</select>

我只是将这些值定位为:

var selected = $('#selection').val();

现在我该如何定位这些选项中的隐藏值而不是选项标签之间的值?

类似的东西:

<select id="selection">
        <option value="selected 1">try 1</option>
        <option value="selected 2">try 2</option>
        <option value="selected 3">try 3</option>
</select>

定位价值?

3 个答案:

答案 0 :(得分:1)

&#34;隐藏价值&#34;您正在引用的,实际上是选项的value属性。标签之间的一个是选项的文本。

当指定value属性时,JQuery中的.val()方法将返回正确的值。

&#13;
&#13;
var selected = $('#selection').val();
alert(selected);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<select id="selection">
        <option value="selected 1">try 1</option>
        <option value="selected 2">try 2</option>
        <option value="selected 3">try 3</option>
</select>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你根本不需要改变。选项选项的“值”始终为value属性, EXCEPT ,如果没有定义。当HTML中没有设置“隐藏值”(即value="some value")时,代码将默认为为该选项定义的文本。

使用您的代码,<option>try 1</option>的值(即没有value属性)是“try 1”,而<option value="selected 1">try 1</option>的值(即,确实有value {1}}属性)被“选中1”。

事实上,您真正需要为select选项定义value属性的唯一时间是您需要捕获的值与显示给用户的值不同。例如,如果您编码<option value="1">1</option>,则实际上并不需要value属性。

答案 2 :(得分:0)

如果您想要value属性,那么您可以使用相同的代码

var selected = $('#selection').val();

它将返回您选择的1

但是如果你想获得nodeValue,你可以使用

var selected = $('#selection').val();
var option = $('#selection option');
var selectedValue;
for(var i=0;i<option.length;i++)
{
    if(option[i].value==selected)
    selectedValue = option[i].childNodes[0].nodeValue;
}
console.log(selectedValue)

它将返回你尝试1